如何在 Xtend 中的任意点保留 void 方法
How to leave a void method at an arbitrary point in Xtend
我想在 Xtend 中做一件非常简单的事情,但不知道怎么做。我有一个 return 类型 void
的方法。在方法的开头检查一个条件并要离开该方法,如果条件不满足,则继续。这是代码的摘录:
def private void generateODB(BlockDeclaration block) {
val relevantTypes = block.nestedElements.filter[...]
// nothing to do: leave!
if (relevantTypes.empty)
return
// ...otherwise do some business logic
}
但是,我得到 return
语句的异常 "Void methods cannot return a value."
。当然,我可以在方法主体的其余部分周围做一个巨大的 if
块,但难道就不能在此时离开该方法吗? Xtend 中正确的语法是什么?
我们真的应该就这里的错误提供更好的错误消息。
这里的问题是,
someCode
if (somePredicate)
return
someOtherCode
被解释为
someCode
if (somePredicate)
return someOtherCode
所以编译器抱怨 someOtherCode 被 returned 的结果。
添加一个分号或一个块来告诉编译器你的意思:
IE。:
如果(somePredicate){
return
}
要么:
如果(某些谓词)
return;
由于您没有将条件语句的 then 块(即 return 语句括在大括号中,例如
if (relevantTypes.empty) {
return
}
或用分号终止return语句,Xtend认为
return
...
一条语句。添加一个分号或将 then 块用大括号括起来,你会没事的。 :-)
我想在 Xtend 中做一件非常简单的事情,但不知道怎么做。我有一个 return 类型 void
的方法。在方法的开头检查一个条件并要离开该方法,如果条件不满足,则继续。这是代码的摘录:
def private void generateODB(BlockDeclaration block) {
val relevantTypes = block.nestedElements.filter[...]
// nothing to do: leave!
if (relevantTypes.empty)
return
// ...otherwise do some business logic
}
但是,我得到 return
语句的异常 "Void methods cannot return a value."
。当然,我可以在方法主体的其余部分周围做一个巨大的 if
块,但难道就不能在此时离开该方法吗? Xtend 中正确的语法是什么?
我们真的应该就这里的错误提供更好的错误消息。 这里的问题是,
someCode
if (somePredicate)
return
someOtherCode
被解释为
someCode
if (somePredicate)
return someOtherCode
所以编译器抱怨 someOtherCode 被 returned 的结果。
添加一个分号或一个块来告诉编译器你的意思: IE。: 如果(somePredicate){ return } 要么: 如果(某些谓词) return;
由于您没有将条件语句的 then 块(即 return 语句括在大括号中,例如
if (relevantTypes.empty) {
return
}
或用分号终止return语句,Xtend认为
return
...
一条语句。添加一个分号或将 then 块用大括号括起来,你会没事的。 :-)