在下面的例子中,为什么我们说“k.send :hello”而不是“k.receive :hello” if, as stated elsewhere , k 实际上是接收者?
听起来 k 是发送者而不是接收者。
当我们说“k.send :hello”时,谁在发送,如果不是 k?
(你是不是和我一样一头雾水?)
class Klass
def hello
"Hello!"
end
end
k = Klass.new
k.send :hello #=> "Hello"
k.hello #=> "Hello"
最佳答案
在 Smalltalk 中,一切都是对象。 “发送者”是消息来源范围的所有者对象(即“this”或“self”指针)。
和以前一样,Ruby 继承了这个概念。简而言之,如果我给你寄了一封信,我就是“寄件人”(它来 self 的办公室),而你是“收件人”(信封上的地址是你的)。所以我会写 foo.send myLetter:你,foo,收到我的信。发件人是隐式的,代码的所有者进行“发布”。
关于ruby - "k.send :hello"- 如果 k 是 "receiver",谁是发件人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916795/