【发布时间】:2021-09-17 21:39:47
【问题描述】:
我对在项目中使用 Scala 比较陌生,偶然发现了一个我不明白的问题。
这是我的代码。为了清楚起见,我对类型进行了注释:
val fcs = for {
fc: Call <- funCalls
ann: List[CapabilityArg] <- context.annotationOption(Annotations.CapabilityArguments, fc)
arg: CapabilityArg <- ann
} yield CapabilityInfo(
"CapabilityArgument", arg.id.name, new LSPRange, new LSPRange
)
哪些错误:
type mismatch;
found : List[LSPServer.this.CapabilityInfo]
required: Option[?]
如果删除for-comprehension中的最后一行,错误就会消失。那条线不应该没问题,因为我只映射一个 List[CapabilityArg]?
提前谢谢你!
【问题讨论】:
-
funCalls和annotationOption有哪些类型? -
@Dima funCalls 是 Vector[Call] 类型,并且 annotationOption 返回一个 Option[List[CapabilityArg]] Tim 的回答几乎解决了我的问题,虽然 :)
标签: scala type-mismatch for-comprehension