"zar" -6ren">
gpt4 book ai didi

ruby - 如何在 ruby​​ 中编写一个采用散列样式、方括号参数的方法,例如 mymethod[arg]?

转载 作者:行者123 更新时间:2023-12-05 09:32:31 24 4
gpt4 key购买 nike

我想用 ruby​​ 编写一个方法来替换当前只返回哈希的方法。

所以目前我们有这个

def some_stats
{
:foo => "bar",
:zoo => "zar"
}
end

可以这样调用:

some_stats[:foo]

我想用一个用 :foo 调用的方法替换它,它会做一些更复杂的事情,而不仅仅是构建一个散列。但是,我希望以相同的方式调用它,使用方括号表示法。 EG

#this is a bit pseudo-cody but hopefully you get the idea.
def some_stats[](key)
if key.to_s =~ /something/
#do something
return something
else
#do something else
return something_else
end
end

这仍然会被称为 some_stats[:foo]

我无法计算出定义方法名称的语法:上面的 def some_stats[](key) 不起作用。不过,我觉得这应该是可能的。

最佳答案

你很接近。 object[sth] 只是 object.[](sth) 的语法糖。因此,要执行您需要的操作,您必须定义 some_stats 方法,该方法返回定义 [] 方法的对象:

class Stats
def [](key)
if key.to_s =~ /something/
#do something
return something
else
#do something else
return something_else
end
end

def some_stats
Stats.new
end

some_stats[:something_new] #=> something
some_stats[:not_new] #=> something_else

关于ruby - 如何在 ruby​​ 中编写一个采用散列样式、方括号参数的方法,例如 mymethod[arg]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68000203/

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