Groovy 获取三元表达式的第一个参数的值
我想使用三元表达式中第一个参数的值来执行如下操作:Groovy 获取三元表达式的第一个参数的值,groovy,Groovy,我想使用三元表达式中第一个参数的值来执行如下操作: a() ? b(value of a()) : c String a() { "a" } def x (x=a()) ? println(x) : println("not a") 有办法做到这一点吗?是一个需要多次运行且返回列表的函数。如果列表为空,我需要进行不同的计算。 我想用三元表达式来表达它 我试着做一些类似的事情: a() ? b(value of a()) : c String a() { "a" } de
a() ? b(value of a()) : c
String a()
{
"a"
}
def x
(x=a()) ? println(x) : println("not a")
有办法做到这一点吗?是一个需要多次运行且返回列表的函数。如果列表为空,我需要进行不同的计算。
我想用三元表达式来表达它
我试着做一些类似的事情:
a() ? b(value of a()) : c
String a()
{
"a"
}
def x
(x=a()) ? println(x) : println("not a")
但这很难看…不知道三元运算符是否可行,但也许记忆是解决方案:
Closure<String> a = {
'a'
}.memoize()
a() ? println(a()) : println("not a")
闭包a={
“a”
}.memoize()
a()?println(a()):println(“非a”)
关于:
Something tmp = a()
tmp ? b(tmp) : c
你可以把它包在一个袋子里吗
def result = a().with { x -> x ? "Got $x" : "Nope" }
您可以使用groovy collect:
def result = a().collect { "Got $it" } ?: "Nope"
如果您担心a()返回包含空值的列表,可以使用findAll
def result = a().findAll { it }.collect { "Got $it" } ?: "Nope"
你能把它放在一个更广泛的背景下吗?很好,但我想摆脱变量声明;我不需要a()的值。Nice@tim_yates!看起来很棒:)@Heschoon Groovy 1.8(ish)中有一个bug,
with
不能与null
一起工作,但我相信它已修复:-)