Groovy中的安全导航操作符对于闭包是什么样的?

时间:2011-07-29 21:04:44

标签: groovy

考虑以下示例:

def c = { println it }
c("hello, world!")

此脚本应该无错误地执行。但是,如果c从未被定义(即为空),该怎么办?

def c = null
c("hello, world!")

此脚本会出现运行时错误。在这种情况下是否有安全的导航操作员使用,或者我是否坚持使用if条件?

def c = { println it }
c?.("hello, world!")

当c不为空时,此脚本似乎不起作用。

2 个答案:

答案 0 :(得分:5)

您应该可以使用较长的call()表单,即:

c?.call( 'hello world?' )

答案 1 :(得分:0)

根据您的要求,您可以使用no-op闭包而不是null。

final c = { println it }
c('hello world')


final c = {}
c('hello world')