2011-09-15 13 views
7

उदाहरण के लिए:स्कैला में, क्या बाहरी क्षेत्र में परिभाषित प्रतीक (चर) तक पहुंचने का कोई तरीका है?

def factory(_name: String) = new Person { 
    val name: String = _name 
} 

मैं बाहरी दायरे में _name के नाम mangling से बचने के लिए देख रहा हूँ।

+0

@pst, मेरा मतलब था: चूंकि 'नाम' विधि 'फैक्ट्री' के इंटरफ़ेस का हिस्सा है, इसलिए इसे उलझन में नहीं रखा जाना चाहिए, बल्कि स्थानीय उत्तर को आपके उत्तर में पेश किया जाना चाहिए। –

उत्तर

6

जबकि अब तक एक आदर्श दृष्टिकोण से, यह "काम कर देता है":

abstract class Person { val name: String } 
def factory(name: String) = { 
    val _name = name 
    new Person { 
    val name: String = _name 
    } 
} 
factory("Fred").name // Fred 

मैं किसी अन्य तरीके से पास पाने के लिए के बारे में पता नहीं है। Scala Language Specification (अध्याय 2) में एक खंड है जो छाया के बारे में बात करता है - और किसी भी जगह यह उन "निहित" क्षेत्रों को अर्हता प्राप्त करने के तरीके पर चर्चा नहीं करता है।

हैप्पी कोडिंग।

+3

धन्यवाद। क्या आपने इस छोटी सी चाल को देखा है जिस पर मैंने ठोकर खाई? एक फ़ंक्शन के भीतर, मान लें कि आप एक पैरामीटर का उपयोग करना चाहते हैं, लेकिन आप पैरामीटर को अपने फ़ंक्शन हस्ताक्षर में निहित घोषित नहीं करना चाहते हैं। आप 'implicit val _ = x 'कर सकते हैं (जहां x फ़ंक्शन पैरामीटर का नाम है)। –

+0

@ landon9720 मुझे यह नहीं पता था। –

संबंधित मुद्दे

 संबंधित मुद्दे