簡體   English   中英

Groovy .each封閉包裝元素在不需要的Object []中

[英]Groovy .each closure wrapping elements in an unwanted Object[]

我正在測試一個返回List of Object []的服務

List<Object[]> list = someService.someMethod()
list.each { Object[] row ->
    assertEquals(A_SIZE,row.length)
}

我仔細檢查了調試器,list的元素是Object [8],但是行被初始化為Object [1],它包含一個Object [8],所以測試失敗,除非A_SIZE為1(在我的場景中沒有意義) 。 如果我將斷言更改為:

assertEquals(A_SIZE, row[0].length)

測試很順利,但我不明白為什么我需要“[0]”,因為“row”應該是Object [8],據我從Groovy規范中理解。

我使用groovy 2.1和grails 2.3M2; 該列表來自MyDomainClass.createCriteria()。

我認為Groovy在解決如何將Object[]映射到Closure參數方面遇到了麻煩。 解決方法是不要像這樣聲明Closure參數的類型:

list.each { row ->
    assertEquals(A_SIZE,row.length)
}

我已經問過了,我認為這是因為Groovy目前試圖將對象“適合”Closure參數(以這種方式工作)

// Returns [ 3, 7 ]
[ [ 1, 2 ], [ 3, 4 ] ].collect { a, b ->
    a + b
}

關於Groovy是否應該在郵件列表中進行這種解構,一直存在爭議,但就目前而言,確實如此:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM