Ruby中面向对象的编程

时间:2015-08-18 06:13:24

标签: ruby

方法是Ruby中的对象吗?我的朋友问我这个问题。我在网站上看到了这个。但我仍然不理解。谁能帮帮我?

2 个答案:

答案 0 :(得分:5)

由于术语方法的模糊性,这里似乎存在混淆。最普通意义上的方法不是对象。在以下内容中:

"foo".upcase

方法upcase已应用于对象"foo",但upcase不是对象,可以从它不能独立的事实看出来:

upcase # => error

(当可以认为省略接收器时,不要混淆这一点。)

但是,有一个类Method,其实例对应于方法,并且是对象。它们也可以称为方法,但这不是术语方法的正常用法。

答案 1 :(得分:4)

不,他们不是。

方法本身是Ruby的语言结构,它们不是对象。但是有一个类Method,其实例代表方法,可以使用Method#call调用。

此外,还有另一种实例 - 类UnboundMethod的实例,它们表示从特定对象分离的方法。它们不能直接调用,但可以以多种不同的方式使用。

如果你正在寻找像Javascript的function这样的东西,那么procs和lambdas就是你想要的。