gpt4 book ai didi

ruby 哈希与方法对

转载 作者:数据小太阳 更新时间:2023-10-29 08:40:17 25 4
gpt4 key购买 nike

我正在使用 rake 任务来接收和处理数据。

数据看起来像 "code:value",其中每个代码都映射到一个特定的操作。

例如"0xFE:0x47"以参数0x47调用0xFE标签对应的方法。

出于可扩展性的目的,我认为这应该映射到一个散列并具有下面定义的方法:

tags = Hash[0xFA => taskA, 0xFB => taskB, 0xFC => taskC]

def taskA(value)
...
end

def taskB(value)
...
end

def taskC(value)
...
end

然后,当收到消息时,进行拆分并调用散列上的方法,例如:

tokens = message.split(':')
tags[tokens[0]](tokens[1])

Ruby 不喜欢Hash 初始化。解决这个问题的正确方法是什么?

最佳答案

也许您希望这些方法像在 JavaScript 中那样工作,在 JavaScript 中它们只是引用,直到被调用,但事实并非如此。最好的方法是将它们保留为符号,然后使用 send 方法调用它们:

# Define a mapping table between token and method to call
tags = {
0xFA => :taskA,
0xFB => :taskB,
0xFC => :taskC
}

tokens = message.split(/:/)

# Call the method and pass through the value
send(tags[tokens[0]], tokens[1])

Hash[] 初始化器通常保留用于特殊情况,例如将数组转换为哈希时。在这种情况下,如果不混淆的话,它是多余的,所以最好省略。 { ... } 具有隐式创建哈希的效果。

关于ruby 哈希与方法对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944806/

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