鉴于这些案例类:
case class FeatureDistance(id: Long, distance: Double)
case class SearchResult(score: Float, id: Long)
为什么不编译?
val distances = List[FeatureDistance](FeatureDistance(1L, 10f))
val results = distances.map(SearchResult(0f, _.id))
但这样做:
val results = distances.map(fd => SearchResult(0f, fd.id))
编译错误说:missing parameter type for expanded function ((x$3) => x$3.id)
是不是因为_
仅限于地图功能,所以它在SearchResult.apply
来电中不可见?
答案 0 :(得分:1)
在做了一些研究之后,我找到了一个包含这个引用的post on the old scala forums:
当你使用" _"作为函数的匿名参数的占位符,该函数的范围是包含它的最内部括号。
所以,这只是一个范围问题。我怀疑这与使用多个下划线的嵌套函数调用可能导致的问题有关。例如:
//suppose we have some x:List[List[Int]]
x.map(_.map(_ + 1))