में समारोह को परिभाषित करने और इस पाठ्यक्रम के व्याख्याता है कि एक समारोह इस तरह से परिभाषित द्वारा प्रदान की सामग्री पढ़ने के लिए:डीईएफ़ या वैल स्काला
val double = (x: Int) => 2 * x
double: Int => Int = <function1>
लेकिन मेरे अपने अध्ययन से मैंने पाया और इस तरह के फ़ंक्शन को परिभाषित करने के लिए उपयोग किया गया:
def d (x: Int) = 2 * x
d: (x: Int)Int
मैं स्कैला के लिए नया हूं। 4
पैरामीटर के रूप में पारित करने पर
res21: Int = 8
: और दोनों परिभाषाओं का एक परिणाम दे। अब मेरा मुख्य प्रश्न यह है कि व्याख्याता किसी कार्य को परिभाषित करने के लिए val
का उपयोग क्यों करना पसंद करेगा? मैं इसे लंबे समय तक देखता हूं और वास्तव में तब तक जरूरी नहीं जब तक कि val
का उपयोग कुछ अतिरिक्त फायदे नहीं देता जो मुझे नहीं पता। इसके अलावा मैं समझता हूं कि val
का उपयोग कुछ प्लेसहोल्डर को बाद में प्रोग्राम में बनाता है, मैं गलती से val double = 5
लिख सकता हूं और फ़ंक्शन समाप्त हो जाएगा! इस चरण में मुझे काफी आश्वस्त है कि मैंने एक समारोह को परिभाषित करने का एक बेहतर तरीका सीखा है जब तक कोई मुझे अन्यथा नहीं बताएगा।
मैं स्कैला के बारे में कुछ निश्चित कहने के लिए योग्य नहीं हूं, लेकिन क्या आपने वास्तव में 'डबल' के रूप में परिभाषित करने के बाद 'वैल डबल = 5' करने की कोशिश की है? मुझे लगता है कि एक बार परिभाषित होने के बाद एक नाम को फिर से परिभाषित करना असंभव होना चाहिए। किसी भी मामले में, 'वैल' और' डीफ 'दोनों एक ही परिणाम का उत्पादन करते हैं। अंतर केवल स्टाइलिस्ट है। अक्सर, 'def' के साथ फ़ंक्शन को परिभाषित करना अधिक स्पष्ट होता है लेकिन कभी-कभी इसे 'वैल' के साथ परिभाषित करने के लिए समझदारी होती है। यदि आप अनिश्चित हैं, तो मैं आपको 'def' के साथ जाने की अनुशंसा करता हूं क्योंकि इससे कोई भ्रम पैदा होने की संभावना कम होती है। – kqr
हां, मैंने 'वैल डबल = 5' किया, टाइप किया 'डबल' और' res24: Int = 5' – Emanuel
[स्केल में विधि और फ़ंक्शन के बीच अंतर] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2529184/अंतर-बीच-विधि-और-फ़ंक्शन-इन-स्कैला) –