rolls = dice.inject(Hash.new(0)) { |result, element| result[element] += 1; result; }
这里如果在 后面的 result 前加个 return,最后这段代码所在的函数返回的是一对哈希值,如果只是用 result,就返回的是个数字。 我可以理解为
这样理解正确吗?下面是全部的代码。
def score(dice)
return 0 if dice == []
sum = 0
rolls = dice.inject(Hash.new(0)) { |result, element| result[element] += 1; result;}
rolls.each { |key, value|
# special condition for rolls of 1
if key == 1
sum += 1000 | value -= 3 if value >= 3
sum += 100*value
next
end
sum += 100*key | value -= 3 if value >= 3
sum += 50*value if key == 5 && value > 0
}
return sum
end