gpt4 book ai didi

Groovy 字符串插值,其值仅在运行时已知

转载 作者:行者123 更新时间:2023-12-02 09:39:36 27 4
gpt4 key购买 nike

我觉得我错过了 Groovy 处理字符串的方式。我意识到它们是不可变的,但我想做的是在运行时插入一个值。我不知道怎么办。让我用 Python 给出一个非常简单的例子(作为“可执行伪代码”)来说明我的意思。然后我将给出我在 Groovy 中尝试过的内容。

Python

# string_sample.py 

class MyClass(object):

greeting = 'Hello, %s!'

def __init__(self):
object.__init__(self)

def sayHello(self, name):
print self.greeting % name


if __name__ == '__main__':
m = MyClass()
m.sayHello('Mario')

上面的打印内容:你好,马里奥!

Groovy

// string_sample.groovy

class MyClass {

def greeting = "Hello, ${name}!"

MyClass() {
}

void sayHello(name) {
println greeting
}
}

m = new MyClass()
m.sayHello('Mario')

上面的 Groovy 脚本提示 name 未知:

捕获:groovy.lang.MissingPropertyException:没有这样的属性:类的名称:MyClass

我明白发生了什么以及为什么。我只是不知道该怎么办。我意识到可以使用 String.format ,这还不错:

    String greeting = "Hello, %s!" 

// Omitted...

void sayHello(name) {
println String.format(greeting, name)
}

我只是想也许有一种更绝妙的方法可以做到这一点。有人知道吗?谢谢!

最佳答案

你可以使用闭包:

class MyClass {

def greeting = { name -> "Hello, ${name}!" }

MyClass() {
}

void sayHello(name) {
println greeting(name)
}
}

关于Groovy 字符串插值,其值仅在运行时已知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997518/

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