假设我有A类,其中有一些方法.
让我们说string methodName是这些方法之一,我已经知道我想要给它的参数.它们在哈希{'param1'=> value1,'param2'=> value2}
所以我有:
params = {'param1' => value1, 'param2' => value2}
a = A.new()
a.send(methodName, value1, value 2) # call method name with both params
Run Code Online (Sandbox Code Playgroud)
我希望能够以某种方式通过传递我的哈希来调用该方法.这可能吗?
确保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__"
Run Code Online (Sandbox Code Playgroud)
这样的事情.