如何在Xtend中的任意点留下void方法

时间:2016-02-16 14:41:10

标签: xtend

我想在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的正确语法?

2 个答案:

答案 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

...

单一陈述。添加一个分号或将大块包裹在大括号中,你会没事的。 : - )