我正在研究这个片段:
def self.from_file(file_name)
new(File.readlines(file_name))
end
这段代码是如何工作的?它仅适用于类方法吗?我知道这应该返回它定义的类的新对象。
我正在研究这个片段:
def self.from_file(file_name)
new(File.readlines(file_name))
end
这段代码是如何工作的?它仅适用于类方法吗?我知道这应该返回它定义的类的新对象。
new
在 Ruby 中不是一个操作符,它只是一个方法 fromClass
所以你只是new
用类作为隐式接收器调用方法,你也可以说:
self.new(File.readlines(file_name))
如果你想明确说明你在做什么。至于它的作用,它:
调用
allocate
以创建class 类的新对象,然后调用该对象的initialize
方法 [...]。每当使用 构造对象时,最终都会调用此方法.new
。
默认情况下,Ruby 将没有显式接收器的消息发送到当前作用域的“自我”接收器。ruby 中的作用域是关于什么对象代表自我。因为该方法被定义为 self.method,所以该方法的范围是定义该方法的类对象。因为新消息没有显式接收,所以它被发送给 self,在本例中是包含该方法的类。