方法是Ruby中的对象吗?我的朋友问我这个问题。我在网站上看到了这个。但我仍然不理解。谁能帮帮我?
答案 0 :(得分:5)
由于术语方法的模糊性,这里似乎存在混淆。最普通意义上的方法不是对象。在以下内容中:
"foo".upcase
方法upcase
已应用于对象"foo"
,但upcase
不是对象,可以从它不能独立的事实看出来:
upcase # => error
(当可以认为省略接收器时,不要混淆这一点。)
但是,有一个类Method
,其实例对应于方法,并且是对象。它们也可以称为方法,但这不是术语方法的正常用法。
答案 1 :(得分:4)
不,他们不是。
方法本身是Ruby的语言结构,它们不是对象。但是有一个类Method
,其实例代表方法,可以使用Method#call
调用。
此外,还有另一种实例 - 类UnboundMethod
的实例,它们表示从特定对象分离的方法。它们不能直接调用,但可以以多种不同的方式使用。
如果你正在寻找像Javascript的function
这样的东西,那么procs和lambdas就是你想要的。