Соединить с рубином
Скажи, что у меня есть
arr = [1,2,3]
Как я могу изменить этот метод, чтобы он добавлял каждый аргумент в массив?
def add(*number)
arr << *number
end
Так add(4,5,6)
производит:
arr #=> [1,2,3,4,5,6]
3 ответа
Решение
Принимая аргументы через splat, они всегда будут массивом. Таким образом, вы можете просто добавить два массива вместе.
def add(*numbers)
arr + numbers
end
Использование concat
:
def add(*nums)
arr.concat nums
end
Или же +
:
def add(*nums)
arr + nums
end
$arr = [1,2,3]
def add(*number)
$arr.concat number
end
add(4,5,6)
$arr #=> [1,2,3,4,5,6]
Замечания: concat
изменяет объект, на котором он работает ($arr
). Плюс (+
) не.
Как упоминает Жестянщик, вы не хотите использовать глобал для этого. Лучше просто сделать
arr.concat [4,5,6]
вне вызова функции. Еще лучше:
arr += [4,5,6]