我看了这个:
让我们从一个简单的Ruby程序开始吧.我们将编写一个返回愉快,个性化问候的方法.
Run Code Online (Sandbox Code Playgroud)def say_goodnight(name) result = "Goodnight, " + name return result end
我的理解是方法是在类中定义的函数或子例程,它可以与类(类方法)或对象(实例方法)相关联.
那么,如果没有在类中定义它,那该怎么办?
Mic*_*ski 12
当你以这种方式在全局范围内在Ruby中定义一个函数时,它在技术上成为了类的一个private方法Object,它是Ruby中所有东西都继承的基类.Ruby中的所有东西都是一个对象,所以确定一个方法确实如此.
def say_goodnight(name)
result = "Goodnight, " + name
return result
end
Object.private_methods.include? :say_goodnight
=> true
Run Code Online (Sandbox Code Playgroud)
因为它被定义为具有private可见性的方法Object,所以它只能在其定义的类或子类的对象内部调用.那为什么它似乎在全球范围内可用?
基本上,Ruby程序本身定义了一个Object被调用的实例main,它作为定义方法的顶级范围.因此,如果您认为您的程序在内部 运行main(这是一个Object),其私有方法可供使用.
# In irb:
self
=> main
self.class
=> Object
self.private_methods.include? :say_goodnight
=> true
Run Code Online (Sandbox Code Playgroud)
附录:
这个答案进一步解释了如何main定义和实施.
| 归档时间: |
|
| 查看次数: |
759 次 |
| 最近记录: |