Руби обязательные ключевые слова аргументы
Для методов Ruby необходим синтаксис ключевого слова
def foo(bar:, baz:)
:
end
foo(:bar => true, :baz => false) # OK
foo(:bar => true) # missing keyword argument error
Можно ли "разбить" список необходимых ключевых слов каким-то волшебством? т.е.
required_keywords = [:bar, :baz]
def foo(magic(required_keywords))
:
end
Я ожидаю, что нет, но я часто удивляюсь тому, что можно убедить сделать Руби.
1 ответ
Операторы splat (*) и double spla t (**) позволяют методу принимать произвольное количество аргументов. Первый будет хранить аргументы в массиве, а второй - в хэше.
Существует также хэш параметров, который является необязательным параметром хеширования, обычно включаемым в качестве последнего параметра в объявлении метода. Он также может принимать произвольное количество аргументов (на самом деле это простые элементы хэша).
Однако в обоих приведенных выше случаях количество аргументов неизвестно при объявлении метода. Следовательно, вы не можете сделать неизвестное количество аргументов "обязательным".
Более подробная информация о сплате, двойном сплате и обязательных параметрах ключевых слов доступна в этом блоге.