Почему нащельная рейка используется в определении массива здесь?

this.dom.addEventListener("click", function(event) {
    self.onclick(event)
}, false);
5
задан Andrew Grimm 12 May 2011 в 23:50
поделиться

3 ответа

Он создает единый плоский массив для catch

Я не уверен, что кто-то полностью понимает оператор splat. Много раз он удаляет один уровень "массивности", но не удаляет последний уровень.

По крайней мере, в этом одном случае его можно получить. Он создает один уровень массива для параметра catch независимо от того, является ли catch одним числом или массивом чисел.

>> t = [*404]
=> [404]
>> t = [*[404,405,406]]
=> [404, 405, 406]
5
ответ дан 14 December 2019 в 13:42
поделиться

Другой способ взглянуть на это: знак l-значения является жадным и содержит как можно больше соответствующих r-значений.

0
ответ дан 14 December 2019 в 13:42
поделиться

Я думаю, лучший способ понять это - посмотреть, что происходит в irb .

Итак, давайте инициализируем пустой хеш, @catch :

>> @catch = {}
=> {}
>> @catch.class
=> Hash

Теперь посмотрим, что происходит, когда параметр catch принимает значение по умолчанию 404 :

>> catch=404
=> 404
>> [*catch].each { |status| @catch[status] = true }
=> [404]
>> @catch[404]
=> true

Это дает нам лучшее представление о том, что происходит. Мы видим, что оператор splat используется для построения хэша ответов. Номера ответов используются в качестве ключа , а значение true устанавливается в качестве значения . Так что независимо от того, сколько элементов у нас есть в catch, мы все равно можем построить хэш .

>> catch=[404, 301, 302, 303, 403]
=> [404, 301, 302, 303, 403]
>> [*catch].each { |status| @catch[status] = true }
=> [404, 301, 302, 303, 403]
>> @catch
=> {302=>true, 303=>true, 403=>true, 404=>true, 301=>true}

Надеюсь, это поможет. Вот ссылка, которая мне немного помогла:

http: //theplana.wordpress. com / 2007/03/03 / ruby-idioms-the-splat-operator /

1
ответ дан 14 December 2019 в 13:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: