*
Является знак оператора.
Он расширяет Array
список аргументов, в данном случае список аргументов Hash.[]
метода. (Точнее, он раскрывает любой объект, который отвечает на to_ary
/ to_a
или to_a
в Ruby 1.9.)
Для иллюстрации, следующие два утверждения равны:
method arg1, arg2, arg3
method *[arg1, arg2, arg3]
Его также можно использовать в другом контексте, чтобы перехватить все оставшиеся аргументы метода в определении метода. В этом случае он не расширяется, а объединяет:
def method2(*args) # args will hold Array of all arguments
end
Более подробная информация здесь .
a,b,*c = d,e,f,*g
устанавливает a = d, b = e и c = [f, g0, g1, g2, ..., gn], где g = [g0, g1, g2, ..., gn]Оператор splat распаковывает массив, переданный функции, так что каждый элемент отправляется в функцию как отдельный параметр.
Простой пример:
Это оно!
источник
Как все говорят, это «сплат». Искать синтаксис Ruby невозможно, и я задавал это в других вопросах. Ответ на эту часть вопроса заключается в том, что вы ищете
в гугле. Google для вас, просто поместите то, что вы видите, в слова.
В любом случае, как много кода на Ruby, этот код довольно плотный.
делает массив элементов SIX,
first_name, mickey, last_name, mouse, country, usa
. Затем сплат используется для преобразования в хэш. Теперь люди из Ruby всегда посылают вас посмотреть на метод Splat, поскольку в Ruby все открыто. Я понятия не имею, где это, но как только вы это сделаете, вы увидите, что он запускаетfor
массив и создает хэш.Вы бы искали код в основной документации. Если вы не можете найти его (я не смог), вы попытаетесь написать такой код (который работает, но НЕ похож на Ruby-подобный):
и тогда банда Ruby сможет сказать вам, почему ваш код глупый, плохой или просто неправильный.
Если вы прочитали это далеко, прочитайте Хэш документацию по для инициализации.
По сути, хеш, который инициализируется несколькими аргументами, создает их как пары ключ-значение:
Так что в вашем примере это приведет к следующему хешу:
источник