我有以下代码,效果很好:
val encodedItems = patterns.collect {
case ParsedItem(s, p, o, true) =>
EncodedItem(encode(s), encode(p), encode(o))
}
但是,我想在patterns
中引用当前项目以在函数参数中使用它并尝试过以下内容:
val encodedItems = patterns.collect {
case item: ParsedItem(s, p, o, true) =>
EncodedItem(encode(s), encode(p, item), encode(o))
}
不幸的是,这不会编译。
如果我只是写case item: ParsedItem =>
它会起作用,我可以使用item
变量。但是,我想确保最后一个参数是true
,就像在第一个代码块中一样,我想保留s
,p
和o
变量。
是否有语法可以一起完成所有这些事情?
答案 0 :(得分:4)
使用@
获取对匹配的完整对象的引用。
val encodedItems = patterns.collect {
case item @ ParsedItem(s, p, o, true) =>
EncodedItem(encode(s), encode(p, item), encode(o))
}