本文主要是介绍《Ruby for Rails 中文版》070924,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第四章 对象和方法
如想列出一个对象固有的方法和清单,可以调用methods方法:p Object.new.methods.sort
对象固有行为
每个对象都有一个唯一的id值。想要看到对象的id值可以在irb:
obj = Object.new
puts "The id of obj is #{obj.object_id}"
respond_to?和send方法
使用respond_to?可以事先判断对象是否能响应给定的消息
obj = Object.new
if obj.respond_to?("talk")
obj.talk
else
puts "sorry..."
end
(.)是 用来发送消息的,send实现的功能是完全相同的,可用另一个调用send的办法:_send_
if ticket.respond_to?(request)
puts ticket.send(request)
else
puts "no..."
end
必需参数、可选参数及默认参数
def two_or_more(a,b,*c)
a和b是必要参数。*c收集其他所有可能发送给该方法的参数,并将它们放在变量c的数组中。如果想要包含可选参数(*x),那么它必须放在任何飞可选参数的后面
局部变量和变量赋值
def say_goodbye
x = "Goodbye"
puts x
end
def start_here
x = "Hello"
puts x
say_goodbye
puts "Let's check whether x remained the same:"
puts x
end
start_here
输出:
Hello
Goodbye
Let's check whether x remained the same:
Hello
由此可见,在一个方法的作用域中使用x作为局部变量名不会影响x在另一个方法作用域中的值,局部变量的这种行为特性是由Ruby处理作用域的机制决定的。
变量的重新赋值:
a = Object.new
b= a
尽管变量a和b是不同的变量,但它们引用的是同一个对象
string_1 = "Hello"
string_2 = "Hello"
尽管这两个字符串包含同样的文本,但是他们不是同一个对象,Ruby中的变量不保存对象的值,而是包含了一个到字符串对象的引用。
str = "Hello"
abc = str
str = "Goodbye"
puts str
puts abc
输出:
Goodbye
Hello
在对str进行第二次赋值时,str获得了另外一个字符串对象的引用。从这开始,str和abc互不关联。abc仍然指向旧的字符串。
这篇关于《Ruby for Rails 中文版》070924的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!