इस प्रश्न का उत्तर देने का प्रयास करते समय: Leave off underscore in function literal मैंने एक उदाहरण कोड करने की कोशिश की और मुझे एक अजीब व्यवहार का सामना करना पड़ा।स्कैला: अंडरस्कोर से बचने के दौरान उलटा परिणाम :::
scala> val myList = 1::2::Nil
myList: List[Int] = List(1, 2)
scala> def concat:(List[Int]=> List[Int]) = myList:::
concat: (List[Int]) => List[Int]
scala> concat(3::Nil)
res1: List[Int] = List(3, 1, 2)
जब मैं _
या x=> f(x)
वाक्यविन्यास का उपयोग जब मैं अच्छा जवाब दिया है।
scala> def concat0:(List[Int]=> List[Int]) = x=> myList:::x
concat0: (List[Int]) => List[Int]
scala> def concat1:(List[Int]=> List[Int]) = myList::: _
concat1: (List[Int]) => List[Int]
scala> concat0(3::Nil)
res2: List[Int] = List(1, 2, 3)
scala> concat1(3::Nil)
res3: List[Int] = List(1, 2, 3)
वहाँ एक तर्कसंगत व्याख्या क्यों myList
समारोह concat
में 3::Nil
के बाद आता है है?
वास्तव में विस्तृत और स्पष्ट पोस्ट के लिए धन्यवाद। –