ruby - "k.send :hello"- 如果 k 是 "receiver",谁是发件人?

标签 ruby terminology

在下面的例子中,为什么我们说“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/

相关文章:

java - Java 中方法的调用者是什么意思?

c# - 使用什么术语来表示继承层次结构中两种类型之间的距离?

algorithm - 操作系统/算法上下文中 "Primitive"的含义

terminology - 软件开发方法论

ruby-on-rails - Rswag 和 Rspec : Undefined method for URL parameter

ruby - Gemfile 中可以有多个版本的 gem 吗?

ruby-on-rails - Rails 模型失败测试断言

ruby - 如何在同一个源文件中拥有测试单元?

hadoop - "RemoteException"在HDFS中一般是什么意思?

ruby - 我如何使用 Nokogiri 将带有&符号的字符串放入 xml 文件中?