我最近刚开始使用ruby,我希望能有一个速记法来使用我缺少的绑定方法作为proc。我基本上是想这么做的

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

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

我觉得在ruby中应该有一个简单的方法来使用SYMBOLS[]作为绑定方法,所以
roman = str.upcase.chars.collect &:SYMBOLS[]

解决方案Ruby 1.9.3
roman=符号。值位于(*str.upcase.chars)

最佳答案

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

关于使用SYMBOLS[],您仍然需要将字符传递给方法。
您可以通过SYMBOLS.method(:[])获得方法,例如。,
> p = SYMBOLS.method(:[])
> p.call("X")
=> 10

我不相信它在这种情况下是最可读的——对我来说,调用map并传入SYMBOLS[],虽然简洁而实用,但却比我喜欢的要延迟理解正在发生的事情的时间。

关于ruby - Ruby:将键数组映射到值的简写形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14486626/

10-13 04:44