3

我有一些在 grails 2.1.0/groovy 1.8.6 中工作但在 grails 2.1.1/groovy 1.8.8 中停止工作的例程。

此代码在 grails 2.1.0 中运行:

def items = []
Object[] item = ["Fluff", new Date(), 11235813]
items << item
println items
assert !items.findAll{it[0] == "Pelusa"}
assert items.findAll{it[0] == "Fluff"}

当我在 grails 2.1.1 中运行它时,它会抛出这个异常:

groovy.lang.MissingMethodException: No signature of method: 
Script1$_run_closure1.doCall() is applicable for argument types: 
(java.lang.String, java.util.Date, java.lang.Integer) values: 
[Fluff, Wed Sep 26 01:02:23 ??? 2012, 11235813]
Possible solutions: doCall(), call(), doCall(java.lang.Object), findAll()

那是一些环境信息:

java version "1.7.0_07"
OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-0ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

我怎样才能让它再次工作?

编辑:我认为这可能是一个 Grails 问题,因为它在 Groovy Console 2.0.1 上运行良好

编辑:这可能是一个错误。我提出了一个jira问题。

4

1 回答 1

0

你应该做类似的事情

    assert !items.flatten().findAll{it[0] == "Pelusa"}
    assert items.flatten().findAll{it[0] == "Fluff"}

“items”是一个列表列表,所以“it[0]”实际上是整个“item”列表,而不是“Fluff”。我不知道为什么这适用于旧版本的 grails 而不是 2.1.0

于 2013-02-12T10:50:33.567 回答