-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Description
Привет!
Cмущает неконсистентная обработка аргументов в apply и func.
Поясните, пожалуйста, почему вызов функции и apply с передачей аргументов работают по-разному?
{ "value": "Test string value" }
https://f-o-r.github.io/yate-playground/?gistId=b23a3250a222c3bbfa4dd4ae1de85ecc
module "hello"
match / {
apply . test1 (.value)
<br/>
apply . test2 (.value)
<br/>
fn(.value)
<br />
fn2(.value)
}
// 1 - используем apply и передаем nodeset без явного декларирования и получаем [object Object]
// в связи с приведением к скаляру
match .* test1 (arg) {
arg
}
// 2 – используем apply, передаем nodeset, декларируем тип nodeset
// получаем Test string value
match .* test2 (nodeset arg) {
arg
}
// 3 – используем func и получаем "Test string value", при том, что переданный nodeset превращается в скаляр внутри, но [Object Object] не выводится, т.к. применяется scalar2xml. Не ясно.
func fn(arg) {
arg
}
// 4 – используем func, декларируем nodeset, получаем "Test string value" и это уже nodeset.
func fn2(nodeset arg) {
arg
}
Metadata
Metadata
Assignees
Labels
No labels