所以,我很好奇Ruby是一种完全面向对象的语言.我偶然发现了一个对我来说不太清楚的问题.
如果我定义一个函数如下
def foo(text)
print text
end
Run Code Online (Sandbox Code Playgroud)
我在一个类之外定义函数,这个函数如何成为一个对象?我意识到我可以打电话
foo.class
Run Code Online (Sandbox Code Playgroud)
我得到了NilClass.这是否意味着foo是NilClass的一个实例?如果是的话,当我打电话时,它究竟意味着什么
foo "hello world"
Run Code Online (Sandbox Code Playgroud)
如果foo是一个对象,当我按上述方式进行语句时,我会调用什么方法.此外,如果它是一个对象,这是否意味着我可以修改它并添加另一个方法(比如bar),我可以在其中制作以下语句:
foo.bar(some variables)
Run Code Online (Sandbox Code Playgroud)
对不起,我在这一点上有点困惑.非常感谢任何澄清!谢谢!
kia*_*uno 12
Object
(即使类self
不是Object
).foo.class
首先调用foo
返回的方法,nil
然后调用class
返回的对象的方法foo
,即nil
.
在伪代码表示法中,逐步评估代码:
foo.class
==> { print text }.class
==> { nil }.class
==> nil.class
==> NilClass
Run Code Online (Sandbox Code Playgroud)