【问题标题】:Why does the addition operator append hash key-value pairs?为什么加法运算符会附加哈希键值对?
【发布时间】:2014-10-09 20:42:33
【问题描述】:

我是编程新手,我试图理解为什么运算符几乎总是用于加法,在 Ruby 中附加一个哈希键值对。

以下代码 sn-p 来自 Pragmatic Studio Ruby 课程:

letters = {"c" => 3, "e" => 1, "l" => 1, "n" => 1, "t" => 1, "x" => 8, "y" => 4}
point_totals = Hash.new(0)

"excellently".each_char do |char|
    point_totals[char] += letters[char]
end

puts point_totals
puts point_totals.values.reduce(0, :+)

输出

{"e"=>3, "x"=>8, "c"=>3, "l"=>3, "n"=>1, "t"=>1, "y"=>4}
23

为什么语言使用+= 而不是<<

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您拥有+=,因为您将letters[char] 的值添加到points_total[char]

    << 用于追加到数组。

    【讨论】:

    • << 也附加到String
    • 所以基本上,这就像字符串的map 方法?
    • 不确定你的意思。 map 用于在每个元素上应用函数并生成新数组时。您的代码基本上计算了字符串中每个字符的总分。
    • @rohit89 Fixnum 的 fix << num 方法以二进制形式向左移动 num 位置(如果 num 为负数则向右移动)。所以2<<310(二进制) 附加了 3 个零,十进制为 16。我的观点是:“
    • @steenslag:它将零添加到位数组中;-)
    【解决方案2】:

    您不是在附加键值对,而是在增加与 points_total 哈希中的 char 键关联的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 2014-10-26
      • 1970-01-01
      • 2011-09-30
      相关资源
      最近更新 更多