मैं थोड़ा curried और uncurried सामान्य कार्यों के बीच में टाइप-चेकिंग अंतर से उलझन में:जेनेरिक प्रकार एकीकरण: एकाधिक पैरामीटर (टी, टी) बनाम एकाधिक पैरामीटर सूचियां (टी) (टी)?
scala> def x[T](a: T, b: T) = (a == b)
x: [T](a: T, b: T)Boolean
scala> def y[T](a: T)(b: T) = (a == b)
y: [T](a: T)(b: T)Boolean
मेरे अंतर्ज्ञान था कि दोनों x(1, "one")
और y(1)("one")
प्रकार त्रुटियों देना चाहिए, लेकिन मैं गलत था:
scala> x(1, "one")
res71: Boolean = false
scala> y(1)("one")
<console>:9: error: type mismatch;
found : java.lang.String("one")
required: Int
y(1)("one")
^
पहले तो मैंने सोचा था कि वहाँ पर जा रहा अंतर्निहित कास्टिंग के कुछ प्रकार था, लेकिन उस मामले होने लगते नहीं किया:
scala> x(1 :Int, "one" :String)
res73: Boolean = false
तो क्या चल रहा है? मेरा अंतर्ज्ञान क्या होना चाहिए?
मैंने इसे बहुत समय पहले एक डुप्लिकेट देखा है। मुझे यह भी विश्वास है कि एसएलएस में यह [लगभग] सटीक मामला दस्तावेज है। –
वहां हम जाते हैं। मैंने शीर्षक "एकाधिक पैरामीटर सूचियों" के साथ शीर्षक को अद्यतन किया है, जिस पर एसएलएस में चर्चा की गई है :) –