Как мне создать функцию Ruby, у которой нет явного числа параметров?
Требуется больше разъяснений?
Используйте оператор сплат *
*
def foo(a,b,c,*others) # this function has at least three arguments, # but might have more puts a puts b puts c puts others.join(',') end foo(1,2,3,4,5,6,7,8,9) # prints: # 1 # 2 # 3 # 4,5,6,7,8,9
Используйте *rest. вот хороший маленький учебник .
*rest
(Если бы я мог добавить комментарий к принятому ответу, я бы сделал это, но у меня недостаточно баллов.)
Предупреждение. Будьте осторожны при использовании методов обработки общих данных. Это отличный кусок синтаксического сахара, но - это ограничения на количество аргументов, которые вы можете передать методу до того, как получите SystemStackError. Я достиг этого предела, используя redis.mapped_mget *keys. Кроме того, предел будет меняться в зависимости от того, где вы используете оператор сплат. Например, при локальном запуске pry я могу выделить в метод массивы из более чем 130 000 элементов. Однако, если он работает внутри целлулоидного актера, этот предел может составлять менее 16 000 элементов.
redis.mapped_mget *keys
Вот еще одна статья на эту тему:
www.misuse.org / наука / 2008/01/30 / ближние многооконные аргументы в-рубиновое-это-ваш-друг
Дает несколько хороших примеров прокручивания и разворачивания ваших параметров с помощью "*"