gpt4 book ai didi

Ruby:如何使用带有散列的 'send' 方法调用方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:27 24 4
gpt4 key购买 nike

假设我有一个类 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

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

最佳答案

确保 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__"

类似的东西。

关于Ruby:如何使用带有散列的 'send' 方法调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3687071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com