Как динамически создавать аргументы для метода? - PullRequest
3 голосов
/ 09 февраля 2010

Будучи еще новичком в Ruby, я не уверен, как это сделать ... Допустим, у меня есть метод, который принимает переменное число аргументов:

def mytest (* args) ставит args.to_json конец

Очевидно, я могу называть это как угодно, например:

mytest ('один', 'два', 'три')

Нет проблем. Но то, что мне нужно сделать, это назвать это динамически созданным набором аргументов. Например, я извлекаю набор результатов из базы данных и не знаю, сколько записей вернется. Допустим, я хочу собрать идентификаторы результатов и вызвать с ними mytest () - как мне создать набор аргументов для передачи в mytest ()?

Это кажется каким-то очевидным, но по какой-то причине это не так. Я понимаю, что вместо этого могу написать mytest () для массива или хэша, но на самом деле я пытаюсь вызвать метод в плагине, который я не написал.

1 Ответ

13 голосов
/ 09 февраля 2010

Я не уверен, что понял ваш вопрос. Вы спрашиваете, как превратить массив в аргументы метода? Прочитайте это

Допустим, у вас есть это:

a = [1,2,3,4]

и метод, принимающий 4 параметра, например:

def whatever(p1,p2,p3,p4)
  # do whatever you want with them here
end

Вы можете вызвать метод, например так:

whatever(*a)

и элементы массива будут отправлены так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...