我们都知道在 ruby 中的 . 运算符左侧有一个对象,.有助于发送消息(右侧.)。
有了上面这个原理"100".to_s,我们可以说操作员正在向对象.发送消息。好一个!to_s100
那么puts("hello")呢?以下是我向当地红宝石专家提出的问题:
在哪里。操作员?
谁是这里的接收者?
我们都知道在 ruby 中的 . 运算符左侧有一个对象,.有助于发送消息(右侧.)。
有了上面这个原理"100".to_s,我们可以说操作员正在向对象.发送消息。好一个!to_s100
那么puts("hello")呢?以下是我向当地红宝石专家提出的问题:
在哪里。操作员?
谁是这里的接收者?
在这种情况下 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
接收者被省略,并且self在那个上下文中。因此,.也省略了。puts是 on 的一个方法Kernel,无论接收者是什么,它都可以访问,puts因为Kernel它包含在任何具有实例的类中。