方法是有对象定义的与该对象相关的操作. 在 Ruby 中, 对象的所有操作都被封装成方法.
简单的方法调用
调用方法的语法如下:
对象.方法名(参数1, 参数2, ..., 参数n)
如上, 以对象开头, 中间隔着.
, 后面接着方法名, 方法名后面是一排参数. 不同的方法定义的参数个数和顺序也都不一样, 调用方法时, 必须按照定义来指定参数. 另外, 调用方法时()
是可以省略的.
上面的对象被称为接收者(receiver)
. 在面向对象的世界中, 调用方法被称为"向对象发送消息(message)", 调用的结果就是"对象接受(receive)了消息". 也就是说, 方法的调用就是把几个参数连同消息一起发送给对象的过程.
带块的方法调用
正如each方法, loop方法那样, 方法本身可以与块一起调用, 这种调用称为带块的方法调用
.
带块的方法调用的语法如下:
对象.方法名(参数, ...) do |变量1, 变量2, ...|
块内容
end
do ~ end 部分就是所谓的块. 除 do ~ end 这一形式外, 我们也可以使用 { ~ } 这种形式.
对象.方法名(参数, ...) { |变量1, 变量2, ...|
块内容
}
如上在块的开头的|~|
部分中指定的变量称为块变量. 在执行块的时候, 块变量由方法传递到块内部. 不同的方法对应的块变量的个数, 值也都不一样. 之前的times方法有一个块变量, 执行块时, 方法会从0开始依次把循环次数赋值给块变量.
100.times do |var|
puts var
end
运算符形式的方法调用
以下形式实际上都是方法
- obj + arg1
- obj =~ arg1
- -obj
- !obj
- obj[arg1]
- obj[arg1] = arg2
这些虽然与一般的方法调用的语法有点不一样, 但我们可以将obj理解为接收者, 将 arg1, arg2 理解为参数.
网友评论