1, "V" => 5, "X" => 1-6ren">
gpt4 book ai didi

Ruby:将一组键映射到值速记

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:33 25 4
gpt4 key购买 nike

我最近刚开始使用 Ruby,我希望有一个使用绑定(bind)方法作为 proc 的简写,但我缺少。我基本上是在尝试这样做

SYMBOLS = {"I" => 1, "V" => 5, "X" => 10, ... }

roman = "zXXIV".upcase.chars.collect { |c| SYMBOLS[c] }
=> [nil, 10, 10, 1, 5]

我觉得在 ruby​​ 中应该有一个简单的方法来使用 SYMBOLS[] 作为绑定(bind)方法,所以就

roman = str.upcase.chars.collect &:SYMBOLS[]

解决方案 Ruby 1.9.3

roman = SYMBOLS.values_at(*str.upcase.chars)

最佳答案

SYMBOLS.values_at(str.upcase.chars.to_a)

关于使用 SYMBOLS[],您仍然需要将字符传递给方法。

您可以通过 SYMBOLS.method(:[])获取方法,例如,

> p = SYMBOLS.method(:[])
> p.call("X")
=> 10

我不相信它在这种情况下是最可读的——对我来说,调用 map 并传入 SYMBOLS[],虽然简洁且实用,但会延迟理解什么是发生的时间比我希望的要长。

关于Ruby:将一组键映射到值速记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14486626/

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