《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仍然指向旧的字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值