我已经在Ruby中编码了一段时间了,但是我不知道何时使用:
def self.METHOD_NAME
end
要不就:
def METHOD_NAME
end
在任何Rails模型中。“ self”是否像Java中的private那样修饰符?我什么时候应该使用它,什么时候不使用?万分感谢。
Answers:
快速解释一下这是什么意思:
在ruby中,可以在特定对象上定义方法:
a = "hello"
def a.informal
"hi"
end
a.informal
=> "hi"
当您执行此操作时,将发生的事情是将a类的对象aString
的类更改为“ ghost”类,aka元类,单例类或本征类。那个新类超类是String
。
另外,在类内部定义中,self
将其设置为要定义的类,因此
class Greeting
def self.say_hello
"Hello"
end
#is the same as:
def Greeting.informal
"hi"
end
end
发生的情况是,属于Greeting
类的对象Class
使用新方法获得了新的元类,因此当您调用
Greeting.informal
=> "hi"
在ruby中没有类方法之类的东西,但是语义是相似的。
关于何时使用哪个的一个很好的指南:
self.
)方法。制作类方法时,请仔细考虑它属于哪个类或模块。如果您发现自己在跨类的类方法中复制代码,请将其分解为其他类可以混入的模块。