Ai đó có thể giải thích lý do tại sao những điều sau không hoạt động. Bằng cách nào đó làm mất một số thông tin cho suy luận kiểu khi tôi làm toSet
, nhưng tôi không hiểu tại sao.toSet và nhập suy luận
scala> case class Foo(id: Int, name: String)
defined class Foo
scala> val ids = List(1,2,3)
ids: List[Int] = List(1, 2, 3)
scala> ids.toSet.map(Foo(_, "bar"))
<console>:11: error: missing parameter type for expanded function ((x$1) => Foo(x$1, "bar"))
ids.toSet.map(Foo(_, "bar"))
^
scala> ids.map(Foo(_, "bar")).toSet
res1: scala.collection.immutable.Set[Foo] = Set(Foo(1,bar), Foo(2,bar), Foo(3,bar))
Dường như trình biên dịch cần một số trợ giúp tạo kiểu rõ ràng, 'ids.toSet.map (Foo (_: Int," bar "))' – jarandaf
Có, nhưng tại sao anh ta không biên dịch cần thông tin khi tôi làm toSet sau bản đồ ?? – regexp
Nhạy cảm, công trình này, 'val a = ids.toSet; a.map (Foo (_, "bar")) ' – elm