parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Передача позиционированных аргументов

G_Z 07.12.2015 00:08

С версии 3.4.1 есть удобная возможность принимать позиционированные аргументы в виде хеша.
Однако, передать произвольное количество позиционированных аргументов хешем нельзя — только перечислив их явно.
@call[method;*params]
$object[^reflection:create[$CLASS;create]]
$method[^reflection:method[$object;$method]]
$result[^method[$params.0;$params.1;…]]
Что не даёт возможности делать гибкие вызовы, пробрасывая произвольное количество параметров.
Например:
^call[my_method;a;b;c]

@call[method;*params]
$object[^reflection:create[$CLASS;create]]
$method[^reflection:method[$object;$method]]
$result[^method[*$params]]
По аналогии с Питоном:
def test(*args):
	test2(*args)
Аналогично можно было бы передать в качестве аргументов сформированный хеш:
$params[
	$.0[a]
	$.1[b]
]

^method[*$params]

@method[a;b]
Понимаю, что синтаксис со звёздочкой несовместим с текущей версией.
Быть может найдутся варианты получше.