Skip to content

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

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
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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