जब से मैं अभी शुरुआत की तरह महसूस (डीपीपी और एम्बर की तुलना में) मैं एक शुरुआती भाषा में अभी शुरुआत करने के लिए यह स्पष्ट करने वाले :
पहला, अज्ञात फ़ंक्शन (या कोड ब्लॉक/लैम्ब्डा अभिव्यक्ति) केवल एक ऐसा फ़ंक्शन है जिसका नाम नहीं है। यह इस तरह एक चर से बंधे जा सकते हैं।
scala> val foo = (x: Int) => 2*x
foo: (Int) => Int = <function1>
scala> val bar = foo
bar: (Int) => Int = <function1>
scala> bar(5)
res2: Int = 10
तुम देखो, समारोह नाम foo नहीं है, यह बजाय पट्टी से कहा जा सकता है।
दूसरा, एक बंद एक अज्ञात फ़ंक्शन है जिसमें एक चर है जो फ़ंक्शन के अंदर परिभाषित नहीं किया गया है (फ़ंक्शन परिभाषित होने से पहले परिवर्तनीय/मान घोषित किया जाना चाहिए)। "पूर्ण संचालित बंद" शब्द इस कार्यक्षमता को संदर्भित कर सकता है।
scala> var constant = 7
constant: Int = 7
scala> val foo = (x: Int) => 2*x + constant
foo: (Int) => Int = <function1>
scala> foo(5)
res3: Int = 17
scala> constant = 6
constant: Int = 6
scala> foo(5)
res4: Int = 16
पहली बार जब आप इसे देखते हैं, तो आप सोच सकते हैं कि यह क्या अच्छा है। संक्षेप में, इसमें आवेदन के कई क्षेत्र हैं :-)
स्रोत
2010-07-17 18:40:30
यह वही है जो मैं खोज रहा था। बहुत बहुत धन्यवाद! – northpole
@ जेस्पर: नहीं, अगर मैं एक्स फाइनल बना देता तो यह काम नहीं करेगा। मुझे बस एक अलग त्रुटि संदेश मिलेगा। ;) मैं केवल एक तत्व के साथ x को अंतिम int सरणी बना सकता हूं ... –
@ जेस्पर, 'रननेबल' के भीतर से 'अंतिम' सरणी की सामग्री में किए गए संशोधनों को प्रत्येक स्कोप पर दिखाई देगा जहां सरणी दिखाई दे रही है। –