【发布时间】:2017-04-15 11:23:30
【问题描述】:
是否可以(以任何方式,无论多么奇怪或丑陋)像方法一样调用对象。 我不是在谈论方法对象或调用对象的方法,我的意思是:
class Klass
def callMeMethod *args
p args
end
end
myObject = Klass.new
myObject *args #=> [arg0, arg1, ...]
myObject(*args) #=> [arg0, arg1, ...]
我考虑过在每次创建对象时定义一个新的全局方法(不管这有多糟糕),但我遇到了问题,即使它是从某些表达式返回的,我也希望调用它:
someArray[index_of_my_object] *args #=> [arg0, arg1, ...]
someArray[index_of_my_object](*args) #=> [arg0, arg1, ...]
所以基本上是 Python 的 __call__ 方法。
谢谢
【问题讨论】:
-
不,我说的是像调用方法一样调用对象 (
object variable # => result) -
是的,是的,更自然是好的,我知道我可以定义方法,我说的是一个非常具体的事情,据我所知,它完全违反了 ruby 方法的概念,并且但我确信有办法将它破解在一起
-
我认为您在这里采用了错误的方法。在使用 Ruby 时编写 Ruby,不要试图让它表现得像其他语言。为什么需要这样做?