क्या कोई समझा सकता है कि निम्नलिखित क्यों काम नहीं करते हैं। किसी भी तरह से toSet
करते समय टाइप अनुमान के लिए कुछ जानकारी संकलित करता है, लेकिन मुझे समझ में नहीं आता क्यों।toSet और टाइप करें अनुमान
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))
लगता है कि कंपाइलर को प्रकार को स्पष्ट करने में कुछ मदद की ज़रूरत है, 'ids.toSet.map (Foo (_: Int, "bar")) ' – jarandaf
हां, लेकिन जब मैं करता हूं तो संकलक को जानकारी की आवश्यकता क्यों नहीं होती मानचित्र के बाद toSet ?? – regexp
उलझन में, यह काम करता है, 'वैल ए = ids.toSet; a.map (Foo (_, "bar")) ' – elm