gpt4 book ai didi

Groovy:在方法中解开命名映射参数

转载 作者:行者123 更新时间:2023-12-01 19:51:11 25 4
gpt4 key购买 nike

我发现自己将很多变量作为命名参数传递给我的方法,因为它使事情变得更加清晰:

doFunction(name: 'Jack', age: 27)

现在在 doFunction 中我经常发现自己这样做:

doFunction(Map args) {

if (args['name']) {
def name = args['name']
// do stuff with name
}
}

是否有语言功能可以将 map 动态解包到其各自的参数?我找不到类似的东西。如果没有,我很好奇为什么,这似乎是自然的 Groovy 样板方法。我想要一种方法来立即检查并处理参数(如果存在),是否有更干净的方法来执行此操作?我是否完全以错误的方式处理 Map 参数?

最佳答案

因为没有像这样的解构在 clojure 中,处理此类 map 的一种方法是使用 with。喜欢:

void destruct(Map params) {
params.with{
if (name) {
println "Hello $name"
}
if (age) {
println "I am $age years old"
}
}
}

destruct name: "World", age: 4.54e9
// => Hello World
// => I am 4.54E+9 years old
destruct name: "Computer"
// => Hello Computer

还有挑剔的一面:这些没有命名参数(例如在Python中)。它只是传递 map 的语法糖。例如。它是 destruct([name: 'World']) 的缩写——它对于方法 void destruct(String name, BigDecimal Age)不起作用/

关于Groovy:在方法中解开命名映射参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29594057/

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