Я создаю тестовый код для сбора списка
import spock.lang.Specification
class CollectTest extends Specification {
void "test collect"() {
when:
def list = [
[
name : 'name1',
amount : 1,
unitPrice: 1000
],
[
name : 'name2',
amount : 2,
unitPrice: 2000
],
[
name : 'name3',
amount : 3,
unitPrice: 3000
]
]
then:
[1 * 1000, 2 * 2000, 3 * 3000] == list.collect { it.amount * it.unitPrice }
}
}
почему произошла ошибка этого кода, возможно, замыкание может иметь только выражение?
это журнал консоли ошибок
Условиеошибка с исключением:
[1 * 1000, 2 * 2000, 3 * 3000] == list.collect {it.amount * it.unitPrice} ||||1000 4000 9000 groovy.lang.MissingPropertyException: Нет такого свойства: список для класса: com.seojin.api.lang.CollectTest Возможные решения: class
at com.seojin.api.lang.CollectTest.test collect(CollectTest.groovy:28)
Причина: groovy.lang.MissingPropertyException: Нет такогосвойство: список для класса: com.seojin.api.lang.CollectTest Возможные решения: класс ... еще 1
then:
[1 * 1000, 2 * 2000, 3 * 3000] == list.collect {
return it.amount * it.unitPrice
}
then:
[1 * 1000, 2 * 2000, 3 * 3000] == list.collect {
(it.amount * it.unitPrice) as Long
}
хорошо работает этот код, почему?Зачем мне "возвращаться"?