0

我正在研究这个片段:

def self.from_file(file_name)
  new(File.readlines(file_name))
end

这段代码是如何工作的?它仅适用于类方法吗?我知道这应该返回它定义的类的新对象。

4

2 回答 2

3

new在 Ruby 中不是一个操作符,它只是一个方法 fromClass所以你只是new用类作为隐式接收器调用方法,你也可以说:

self.new(File.readlines(file_name))

如果你想明确说明你在做什么。至于它的作用,它:

调用allocate以创建class 类的新对象,然后调用该对象的initialize方法 [...]。每当使用 构造对象时,最终都会调用此方法.new

于 2013-05-23T02:50:37.010 回答
1

默认情况下,Ruby 将没有显式接收器的消息发送到当前作用域的“自我”接收器。ruby 中的作用域是关于什么对象代表自我。因为该方法被定义为 self.method,所以该方法的范围是定义该方法的类对象。因为新消息没有显式接收,所以它被发送给 self,在本例中是包含该方法的类。

于 2013-05-23T03:03:32.233 回答