我最近在閱讀'Groovy in Action'。在第7章中,它介紹了*。操作員。當我運行關於這個操作符的代碼時,我收到了一些錯誤。Groovy *。運營商
class Invoice {
List items
Date date
}
class LineItem {
Product product
int count
int total() {
return product.dollar * count
}
}
class Product {
String name
def dollar
}
def ulcDate = new Date(107,0,1)
def ulc = new Product(dollar:1499, name:'ULC')
def ve = new Product(dollar:499, name:'Visual Editor')
def invoices = [
new Invoice(date:ulcDate, items: [
new LineItem(count:5, product:ulc),
new LineItem(count:1, product:ve)
]),
new Invoice(date:[107,1,2], items: [
new LineItem(count:4, product:ve)
])
]
//error
assert [5*1499, 499, 4*499] == invoices.items*.total()
最後一行將引發異常。起初,我可以解釋爲什麼會發生這種錯誤。 invocies是一個List,元素的類型是Invoice。所以直接使用項目會產生錯誤。我試圖通過使用invoices.collect{it.items*.total()}
但仍然得到失敗斷言。那麼,我怎樣才能使斷言成功,以及爲什麼發票* .items * .total()會拋出異常。
優秀的,謝謝! – linuxlsx