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 "эй" од
.