gpt4 book ai didi

groovy - 如果我用 (arg, ...args) 定义方法,参数将反转

转载 作者:行者123 更新时间:2023-12-02 09:31:17 33 4
gpt4 key购买 nike

例如:

def m(arg, ...args) {
println "arg: $arg"
println "args: $args"
}

m('arg', k:'v')

输出:

arg:['k':'v']
args:['arg']

我认为正确的输出应该是

args:['arg']
arg:['k':'v']

最佳答案

Groovy 对映射参数有特殊的排序规则,如果它们在参数列表中占据第一个位置

def fn(Map params, ...args) {
println "params = $params and args = $args"
}

然后,调用该方法:

fn(1, 2, 3, something:'else')

将打印:

params = [something:else] and args = [1, 2, 3]

Groovy 对于闭包参数也有特殊的排序规则,如果它们是最后一个参数:

def fn2(a, b, Closure cl) {
cl(a, b)
}

然后在调用方法时可以将它们放在括号之外,即:

println fn2(1, 2) { a, b -> a + b } // prints 3

因为您省略了所有参数的类型,所以它只是将 map 作为第一个参数

关于groovy - 如果我用 (arg, ...args) 定义方法,参数将反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32841502/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com