据我所知,在Ruby中有三种动态调用方法:
方法1:
s = SomeObject.new
method = s.method(:dynamic_method)
method.call
方法二:
s = SomeObject.new
s.send(:dynamic_method)
方法3:
s = SomeObject.new
eval "s.dynamic_method"
通过对它们进行基准测试,我已经确定了方法1到目前为止是最快的,方法2是最慢的,方法3是到目前为止最慢的。
我还发现.call
和.send
都允许调用私有方法,而eval
不允许。
所以我的问题是:有没有理由使用.send
或eval
?为什么你不总是使用最快的方法呢?这些调用动态方法的方法还有哪些不同之处?
https://stackoverflow.com/questions/17454992
复制相似问题