相关疑难解决方法(0)

在Ruby中调用动态方法

据我所知,有三种方法可以在Ruby中动态调用方法:

方法1:

s = SomeObject.new
method = s.method(:dynamic_method)
method.call
Run Code Online (Sandbox Code Playgroud)

方法2:

s = SomeObject.new
s.send(:dynamic_method)
Run Code Online (Sandbox Code Playgroud)

方法3:

s = SomeObject.new
eval "s.dynamic_method"
Run Code Online (Sandbox Code Playgroud)

通过对它们进行基准测试,我已经确定方法1是最快的,方法2是慢的,方法3是迄今为止最慢的.

我也发现,.call并且.send都允许调用私有方法,而eval不是.

所以我的问题是:有没有理由使用.sendeval?为什么你不总是只使用最快的方法?这些调用动态方法的方法有什么其他区别?

ruby metaprogramming dynamic-method

68
推荐指数
3
解决办法
3万
查看次数

标签 统计

dynamic-method ×1

metaprogramming ×1

ruby ×1