我有以下代码,无法编译:
sealed trait PcpPair
case class PcpHead(key: String, value: String) extends PcpPair
case class PcpFieldValue(field: String, value: String) extends PcpPair
private val decodeHead: List[PcpHead] => String = heads =>
decodePair(heads) { (acc, value) =>
acc |+| value.key |+| ":" |+| value.value |+| "\n"
}
private val decodePair: List[PcpPair] => ((String, PcpPair) => String) => String = pcpList => fnPcp =>
pcpList.foldLeft("")(fnPcp)
编译器抱怨:
value key is not a member of com.sweetsoft.PcpPair
[error] acc |+| value.key |+| ":" |+| value.value |+| "\n"
我在做什么错了?
答案 0 :(得分:0)
PcpPair
没有value
成员。 PcpHead
和PcpFieldValue
可以。但是decodePair
坚持接受PcpPair
的列表。
我想,您需要使value
在PcpPair
级别上以某种方式可见,或者您必须在传递给fold的函数中显式地匹配case类。
(例如,在Haskell中,您还必须编写明确的匹配规则。)