Skip to content

Передача аргументов в apply и func #256

@andychups

Description

@andychups

Привет!

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions