gpt4 book ai didi

grails - 使用Groovy将String或String []转换为列表

转载 作者:行者123 更新时间:2023-12-03 15:08:36 24 4
gpt4 key购买 nike

我有多个选择变量发布到 Controller 。多重选择的工作方式是:如果仅选择一个值,则将其作为单个String传递;如果选择了多个值,则将其作为String []传递。我想保持处理简单,并将传递的值视为相同。因此,我可以使用的最好方法是将其转换为List,如下所示:

def selectedValues = params.selectedValues

List valuelist = new ArrayList()

if(selectedValues instanceof String) {
valuelist.add(selectedValues)
} else {
valuelist = selectedValues as List
}

它可以工作,但我很好奇是否有更时髦的方法可以做到这一点,也许只用一根衬里:)。

当然,如果我只是这样做:
List valuelist = selectedValues as List

它不适用于单个选定的值,因为它将把它说成24转换为[2,4]

有任何想法吗?

最佳答案

您可以使用flatten获得以下信息:

def toList(value) {
[value].flatten().findAll { it != null }
}

assert( ["foo"] == toList("foo") )
assert( ["foo", "bar"] == toList(["foo", "bar"]) )
assert( [] == toList([]) )
assert( [] == toList(null) )

或者,如果您不想使用单独的方法,则可以将其作为一个衬套来完成:
[params.selectedValues].flatten().findAll{ it != null }

我个人只是编写两个方法,然后让类型系统为我处理:
def toList(String value) {
return [value]
}

def toList(value) {
value ?: []
}

assert( ["foo"] == toList("foo") )
assert( ["foo", "bar"] == toList(["foo", "bar"]) )
assert( [] == toList([]) )
assert( [] == toList(null) )

它更有效,我认为发生了什么。

关于grails - 使用Groovy将String或String []转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162257/

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