我最近刚开始使用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/