大名鼎鼎的java动态脚本语言。已经通过了sun的认证
源代码在线查看: optionalreturntest.groovy
class OptionalReturnTest extends GroovyTestCase { def y void testSingleExpression() { def value = foo() assert value == 'fooReturn' } void testLastExpressionIsSimple() { def value = bar() assert value == 'barReturn' } void testLastExpressionIsBooleanExpression() { def value = foo2() assert value value = foo3() assert value == false } void testLastExpressionIsAssignment() { def value = assign() assert value == 'assignReturn' value = assignField() assert value == 'assignFieldReturn' } void testLastExpressionIsMethodCall() { def value = methodCall() assert value == 'fooReturn' } void testEmptyExpression() { def value = nullReturn() assert value == null } // now this is not a compile time error in jsr-03 void testVoidMethod() { def value = voidMethod() assert value == null } void testNonAssignmentLastExpressions() { def value = lastIsAssert() assert value == null } def foo() { 'fooReturn' } def bar() { def x = 'barReturn' x } def foo2() { def x = 'cheese' x == 'cheese' } def foo3() { def x = 'cheese' x == 'edam' } def assign() { def x = 'assignReturn' } def assignField() { y = 'assignFieldReturn' } def nullReturn() { } def lastIsAssert() { assert 1 == 1 } def methodCall() { foo() } void voidMethod() { foo() } }