首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby中的动态方法调用

Ruby中的动态方法调用
EN

Stack Overflow用户
提问于 2013-07-04 01:54:10
回答 4查看 30.9K关注 0票数 71

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

方法1:

代码语言:javascript
复制
s = SomeObject.new
method = s.method(:dynamic_method)
method.call

方法二:

代码语言:javascript
复制
s = SomeObject.new
s.send(:dynamic_method)

方法3:

代码语言:javascript
复制
s = SomeObject.new
eval "s.dynamic_method"

通过对它们进行基准测试,我已经确定了方法1到目前为止是最快的,方法2是最慢的,方法3是到目前为止最慢的。

我还发现.call.send都允许调用私有方法,而eval不允许。

所以我的问题是:有没有理由使用.sendeval?为什么你不总是使用最快的方法呢?这些调用动态方法的方法还有哪些不同之处?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17454992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档