TL; DR: obj[...]
вызывает метод []
на obj
(с аргументами ...
)
Ваш фрагмент кода, вероятно, используется для подсчета вхождений символов в строку:
str = 'hello world'
count = Hash.new(0)
str.each_char { |char| count[char] += 1 }
count
#=> {"h"=>1, "e"=>1, "l"=>3, "o"=>2, " "=>1, "w"=>1, "r"=>1, "d"=>1}
Здесь count
- это ha sh со значением по умолчанию 0
.
Внутри блока char
- это один из символов строки, т.е. "h"
, "e"
, "l"
et c.
Скобки - это синтаксис c сахар для вызов метода : Hash#[]
(ссылка на элемент). Но есть еще один вызов скрытого метода. В Ruby, a += b
- это синтаксис c сахар для a = a + b
. Итак, count[char] += 1
на самом деле:
count[char] = count[char] + 1
Левая часть - Hash#[]=
(присваивание элемента).