有条件地将某些东西添加到字符串的好旧java方式如下:
if (booleanFlag) { myString += "something to append" }
我能以更加时髦的方式做同样的事吗,理想情况下是一行吗?
这是使用GString闭包的一种古怪的方式:
>>> def world = false >>> def people = true >>> >>> def message = "Hello${sw -> if (world) sw << ' World'; if (people) sw << ' People'}" >>> >>> message Hello People >>> >>> people = false >>> world = true >>> >>> message Hello World >>> >>> world = false >>> message Hello
字符串看起来有点长,可以加上一些缩进,但是时髦的外壳不允许我分开行。切换到IDE,事实证明,您可以像这样更好地编写字符串(借助三引号字符串):
def message = """Hello${sw -> if (false) sw << ' World!' if (false) sw << ' People!' if (true) sw << ' Groovy!' }"""
现在很古怪!