我们都知道在红宝石中的事实。将对象留给.
的运算符有助于发送消息(右侧为.
)。
根据上述原则 - "100".to_s
,我们可以说.
运算符正在向对象to_s
发送消息100
。好的!
那么puts("hello")
呢?以下是我对当地红宝石专家的提问:
所在的地方。操作
谁是这里的接收人?
答案 0 :(得分:8)
在这种情况下,Receiver是隐式self
。 puts
是Kernel
的一种方法。所有类都包含内核模块,因此所有对象都有puts
方法。唯一的事情是:它是私人的。私有方法只能使用隐式self
(或使用send
)
puts 'foo' # >> foo
1.puts 'bar' # ~> -:3:in `<main>': private method `puts' called for 1:Fixnum (NoMethodError)
1.send :puts, 'bar' # >> bar
答案 1 :(得分:2)
接收器被省略,并且在该上下文中为self
。因此,.
也被省略。 puts
是Kernel
上的一种方法,无论接收者是什么,它都可以访问puts
,因为Kernel
包含在任何具有实例的类中。