假设我们在交互式Ruby浏览器中运行:
>> sometext = "Hello, Cruel World!"
>> puts sometext
Hello, Cruel World!
=> nil
>>
推杆的目标是什么?我确信坐在那里看似“放”自己的裸体方法是“语法糖”,但我也打赌,对于执行这些操作的“对象”有一些明确的名称...像Ruby ::自我或自我::事或......是什么?
答案 0 :(得分:4)
用irb来说明:
2.3.0 :002 > Kernel.private_instance_methods.include?(:puts)
=> true
2.3.0 :003 > self
=> main
2.3.0 :004 > self.class
=> Object
2.3.0 :005 > self.class.ancestors
=> [Object, Kernel, BasicObject]
正如Kenrick Chien在下面的评论中所说,“内核是一个混合到Object的模块,它提供了一个名为puts的私有方法。在Ruby中,私有方法不能用显式接收器调用。所以当你问的时候关于什么对象正在进行推杆,当你调用puts时,它是范围内的当前对象(self)。“
答案 1 :(得分:3)
这是一个名为main
的特殊对象,它是Object
的一个实例,它继承了Kernel
。
答案 2 :(得分:1)
Puts在Ryby的内核中实现。更具体地说,它来自的IO类。您可以在文档中找到有关此内容的更多信息:http://ruby-doc.org/core-2.2.2/IO.html#method-i-puts
答案 3 :(得分:0)
由于某种原因,现在这个谈话刚出现在我的脑海中,确实有一个我能想到的问题的最佳答案。 Functional Java希望它能让它变得更加清晰。