Groovy 抱怨意外的令牌:->

Ric*_*hie 2 groovy mule

我在 Mule 中有以下 Groovy 脚本。

import org.custommonkey.xmlunit.XMLUnit.*
def expected = 
    getClass().getResourceAsStream('/samples/in/request.xml').text 

XMLUnit.setIgnoreWhitespace(true)
def documentDiff = DiffBuilder
            .compare(expected)
            .withTest(message.getInboundProperty('webServiceRequest'))
            .withNodeFilter(node -> !node.getNodeName().equals('EffectiveDate'))
            .build()
Run Code Online (Sandbox Code Playgroud)

出于某种原因,Groovy 抱怨“->”..

Script3.groovy: 10: unexpected token: -> @ line 10, column 34.
               .withNodeFilter(node -> !node.getNodeName().equals(EffectiveDate))
Run Code Online (Sandbox Code Playgroud)

我不明白。我认为这在 Groovy 中没问题?我错过了什么吗?

小智 6

因为在这里:

.withNodeFilter(node -> !node.getNodeName().equals(EffectiveDate)) 
Run Code Online (Sandbox Code Playgroud)

是 Java8 中的 lambda 语法,目前 Groovy 的发布版本不支持它(应该包含在 Groovy 3 中);

而不是使用 Groovy 的 clojures:

.withNodeFilter { //code here }
Run Code Online (Sandbox Code Playgroud)