groovy类方法未返回预期结果
我希望结果返回groovy类方法未返回预期结果,groovy,Groovy,我希望结果返回“这些是我的项目:*foo*bar”,但它返回“这些是我的项目:”。等价的语法在JS中工作 这似乎是一个异步问题,但我不确定如何修复。我做了一些搜索并找到了ExecutorService API,但不确定如何合并 问题 有没有人可以编辑这个groovy剪报,这样返回的内容就会产生“这些是我的物品:*foo*bar”?如果可能的话,我想维护多类JS react-like结构。包括这一点,使其更像Groovy class Items{ List list It
“这些是我的项目:*foo*bar”
,但它返回“这些是我的项目:”
。等价的语法在JS中工作
这似乎是一个异步问题,但我不确定如何修复。我做了一些搜索并找到了ExecutorService API,但不确定如何合并
问题
有没有人可以编辑这个groovy剪报,这样返回的内容就会产生
“这些是我的物品:*foo*bar”
?如果可能的话,我想维护多类JS react-like结构。包括这一点,使其更像Groovy
class Items{
List list
Items(List list){
list = list
}
def render(){
return ("these are my items: ${list.collect{new Item(it).render()}.join(' ')}")
}
}
class Item{
List item
Item(String item){
item = item
}
def render(){
return ("* ${item}")
}
}
new Items(['foo', 'bar']).render()
Groovy具有隐式返回,不需要额外的父级
就我个人而言,我也不喜欢这样的大字符串插值;我会把它拉到一个中间变量中
class Items{
List list
Items(List list){
this.list = list
}
def render(){
return ("these are my items: ${list.collect{new Item(it).render()}.join(' ')}")
}
}
class Item{
String item
Item(String item){
this.item = item
}
def render(){
return ("* ${item}")
}
}
new Items(['foo', 'bar']).render()
您的
项目。项目
是一个列表
,而不是字符串
。您的构造函数必须是this.x=x
。异步问题?我不明白你说的是什么意思。您的构造函数缺少此.xxx(两个);您正在将参数分配给自身Item
的Item应该是一个字符串,与代码的其余部分一致。虽然我也有一个输入错误,但使用“this”可以做到这一点。@BGS如果您的参数与实例变量的名称相同,它怎么知道您指的是什么?很抱歉清楚的事情我还是不知道哈。。我觉得我以前没有在groovy中对实例化类使用“this”就侥幸逃脱了。所以你总是必须用实例化类来“this”来引用类字段?如果你想去掉c'tor,你可以在两个类上使用groovy.transform.TupleConstructor
注释。我喜欢它。谢谢你的帮助。
class Items {
List list
def render() {
"these are my items: ${list.collect { new Item(item: it).render() }.join(' ')}"
}
}
class Item {
String item
def render() {
"* ${item}"
}
}
println(new Items(list: ['foo', 'bar']).render())