这将满足您的要求:
games.keys.join.chars.map { |c| c.ord }.inject(:+) #=> 1422
故障...
games.keys
#=> ["Mario", "Ico", "Tetris"]
games.keys.join
#=> "MarioIcoTetris"
games.keys.join.chars
#=> ["M", "a", "r", "i", "o", "I", "c", "o", "T", "e", "t", "r", "i", "s"]
games.keys.join.chars.map { |c| c.ord }
#=> [77, 97, 114, 105, 111, 73, 99, 111, 84, 101, 116, 114, 105, 115]
games.keys.join.chars.map { |c| c.ord }.inject(:+)
#=> 1422
更好...
如果你想变得更漂亮,你也可以写:
games.keys.join.chars.map(&:ord).inject(:+) #=> 1422
只是为了好玩...
这是另一种方式,我们在 String 类中定义一个方法,然后将该方法应用于每个键,然后将所有键的序数和相加:
class String
def sumord
chars.map(&:ord).inject(:+)
end
end
games.keys.map(&:sumord).inject(:+) #=> 1422