Существуют ли «правила» для синтаксического сахара Ruby?

I Я изучаю основы Ruby (только начинаю), и я наткнулся на метод Hash. [] . Он был введен в

a = ["foo", 1, "bar", 2]
=> ["foo", 1, "bar", 2]
Hash[*a]
=> {"foo"=>1, "bar"=>2}

Немного подумав, я понял, что Hash [* a] эквивалентен Hash. [] (* A) или Hash. [] * а . У меня вопрос, почему это так.Что позволяет вам помещать * a в квадратные скобки, и есть ли какое-то правило для того, где и когда еще можно использовать «это»?

Изменить: Моя формулировка кажется, вызывает некоторую путаницу. Я не спрашиваю о расширении массива. Я понимаю. Мой вопрос в основном таков: если [] - это имя метода, почему можно помещать аргументы в скобки? Это почти - но не совсем - как сказать, что если у вас есть метод Foo.dood , и вы хотите передать ему строку «эй» , тогда вы можете напишите Foo.do "эй" од .

5
задан Ryan Stewart 9 October 2011 в 19:24
поделиться