我想在Xtend中做一件非常简单的事情并且不知道如何做。我有一个返回类型为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
}
但是,我得到"Void methods cannot return a value."
语句的异常return
。当然,我可以在方法体的其余部分周围做出一个巨大的if
块,但是现在还不能离开这个方法吗?什么是Xtend的正确语法?
答案 0 :(得分:3)
我们真的应该提供一个更好的错误信息,告诉我们这里有什么问题。 这里的问题是,
someCode
if (somePredicate)
return
someOtherCode
被解释为
someCode
if (somePredicate)
return someOtherCode
因此编译器会抱怨someOtherCode被返回的结果。
添加分号或块以告诉编译器您的意思: 即: if(somePredicate){ 返回 } 要么: if(somePredicate) 返回;
答案 1 :(得分:1)
由于你没有用花括号包装条件的然后阻塞,即return语句,比如
if (relevantTypes.empty) {
return
}
或以分号结束return语句,Xtend考虑
return
...
单一陈述。添加一个分号或将大块包裹在大括号中,你会没事的。 : - )