我正在查看一些开源代码,无法将我的头缠在这个片段上。

class Something
    def self.smart
       new.smart
    end

    def smart
      "test"
    end
end

class Other < Something

println Other.smart

每次调用smart时,代码是否都试图实例化一个新实例?

最佳答案

def self.smart
       new.smart
end

等效于static方法,可以使用类名进行访问。
... static ... smart()


def smart
      "test"
end

等价于instance方法,需要对象访问
... smart()

new与java中的相同,创建了一个类的实例。

整个事情就等同于
public static .... smart(){
   new ClassName().smart();
}

关于java - 从Java的角度来看,“自我”和"new"在Ruby中意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8737341/

10-09 05:25