加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby:如何使用’send’方法调用方法,使用哈希?

发布时间:2020-12-17 03:51:51 所属栏目:百科 来源:网络整理
导读:假设我有A类,其中有一些方法. 让我们说string methodName是这些方法之一,我已经知道我想要给它的参数.他们在哈希{‘param1’= value1,’param2’=值2} 所以我有: params = {'param1' = value1,'param2' = value2}a = A.new()a.send(methodName,value1,value
假设我有A类,其中有一些方法.

让我们说string methodName是这些方法之一,我已经知道我想要给它的参数.他们在哈希{‘param1’=> value1,’param2’=>值2}

所以我有:

params = {'param1' => value1,'param2' => value2}
a = A.new()
a.send(methodName,value1,value 2) # call method name with both params

我希望能够以某种方式通过传递我的哈希来调用该方法.这可能吗?

解决方法

确保methodName是一个符号,而不是一个字符串(例如methodName.to_sym)

无法将哈希传递给发送,您需要一个数组,并且其中的键/值不是特定的顺序,但方法的参数需要,因此您需要一些合理的方法来获取值正确的订单.

然后,我认为您需要使用splat运算符(*)传入该数组以进行发送.

methodName = 'center'    
params = {'param1' => 20,'param2' => '_'}.sort.collect{|k,v| v}
a = "This is a string"
a.send(methodName.to_sym,*params)

=> "__This is a string__"

这样的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读