मैं निम्नलिखित दो कार्यों को परिभाषित कर सकते हैं:आंशिक फ़ंक्शन 2 फ़ंक्शंस पर क्यों लागू होता है जो एक ही चीज को दो अलग-अलग तरीकों से परिभाषित करता है, एक अलग परिणाम देता है?
def add(a: Int, b: Int, c: Int) = a + b + c
इस
add: (a: Int, b: Int, c: Int)Int
और
val add2 = (a: Int, b: Int, c: Int) => a + b + c
इस
add2: (Int, Int, Int) => Int = <function3>
दोनों में जो परिणाम में परिणाम इन के कार्यों कि बिल्कुल वही चीज़ करते लेकिन एक अलग तरीके से परिभाषित कर रहे हैं, अगर मैं आगे जाना है और इस प्रकार एक आंशिक रूप से लागू किया समारोह को परिभाषित क्या मुझे समझ नहीं आता है:
def a = add _
यह
a: (Int, Int, Int) => Int = <function3>
में जो परिणाम
की उम्मीद के रूप में, एक समारोह है कि 3 पैरामीटर लेता है और एक इंट दिखाए, लेकिन यह
में परिणाम अगर मैंdef a2 = add2 _
करना
a2:() => (Int, Int, Int) => Int = <function0>
जो एक ऐसा प्रतीत होता है जो कोई पैरामीटर नहीं लेता है और एक फ़ंक्शन देता है जो 3 इंट पैरामीटर लेता है और एक इंट देता है। ऐसा क्यों होता है? क्या कोई बता सकता है कि क्या हो रहा है?
धन्यवाद
[कार्यों के दो तरीके की घोषणा के संभावित डुप्लिकेट। भेद क्या है?] (Http://stackoverflow.com/questions/2720486/declaring-functions-two-ways-what-is-the-distinction) –
वह डुप्लिकेट तीसरा संबंधित लिंक था। वास्तव में, पहले पूछे जाने वाले प्रश्न को देखने का प्रयास करें - इस से कई बार पूछा गया है। जबकि मुझे लगता है कि लिंक निकटतम डुप्लिकेट है, मैं व्यक्तिगत रूप से [इस उत्तर] की सिफारिश करता हूं (http://stackoverflow.com/questions/2529184/difference-between-method-and-function-in-scala/2530007#2530007) मेरा विषय के निचले हिस्से तक पहुंचने के लिए। –
ओह, वैसे, शायद आप स्पष्ट होंगे अगर आप 'val add2' के बजाय 'def add2' लिखते हैं। –