2012-03-16 15 views
77

स्कैला स्थिरांक के लिए नामकरण सम्मेलन क्या है? StackOverflow सुझावों पर एक संक्षिप्त खोज ऊपरीकेस CamelCase (नीचे पहली पंक्ति), लेकिन मैं दोबारा जांचना चाहता था।स्कैला स्थिरांक के लिए नामकरण सम्मेलन?

val ThisIsAConstant = 1.23 
val THIS_IS_ANOTHER_CONSTANT = 1.55 
val thisIsAThirdConstant = 1.94 

स्कैला शैली की सिफारिश की जाती है?

+2

जब यह एक पारंपरिक, पूरी तरह-पूर्वनिर्धारित सी/जावा शैली लगातार, पहले एक की तरह इस्तेमाल किया जा सकता है। दूसरा रूप- और आम तौर पर नामों में अंडरस्कोर-वास्तव में कभी भी उपयोग नहीं किया जाता है। तीसरा आम तौर पर अपरिवर्तनीय मूल्यों के लिए उपयोग किया जाता है जो गतिशील रूप से उत्पन्न होते हैं। – Destin

+3

मैं दूसरे का उपयोग कर रहा हूं, लेकिन ज्यादातर जावा के अनुभव के लिए। इसे अस्वीकार करें, मुझे लगता है कि अधिकांश आधिकारिक तरीका पहला है (क्योंकि इसका उपयोग स्कैला लिब में ही किया जाता है, उदाहरण के लिए π को देखें जिसे 'पीआई' कहा जाता है)। –

उत्तर

108

आधिकारिक तौर पर अनुशंसित शैली (और मेरा आधिकारिक तौर पर मतलब है) पहली शैली है, पहले अक्षर के साथ ऊंट का मामला ऊपरी मामला है। यह स्कैला में प्रोग्रामिंग पर ओडर्सकी द्वारा स्पष्ट रूप से निर्धारित किया गया है।

शैली के बाद मानक लाइब्रेरी भी है, और भाषा अर्थशास्त्र में कुछ समर्थन है: ऊपरी मामले से शुरू होने वाले पहचानकर्ता पैटर्न मिलान में स्थिरांक के रूप में माना जाता है।

(धारा 6.10, पी। दूसरे संस्करण में 107)

+1

आधिकारिक स्कैला नामकरण दिशानिर्देशों को देखते हुए, संस्करण 3 वास्तव में अनुशंसित शैली है: http://docs.scala-lang.org/style/naming-conventions।एचटीएमएल # value_variable_and_methods – Matthias

+3

@ माथियास जो स्थिरांक को कवर नहीं करता है। एक भयानक निरीक्षण, लेकिन, मुझ पर भरोसा करें, न केवल यह सही है, बल्कि तीसरी शैली _ समस्याएं पैदा करेगी, जैसे ही आप पैटर्न पैटर्न पर इसका इस्तेमाल करेंगे। –

+1

@ मैथियस मैंने अब [एक मुद्दा] खोला है (https://github.com/scala/scala.github.com/issues/231) इसके बारे में। मैं आमतौर पर फिक्स और पीआर करता हूं, लेकिन मुझे दुख की बात है कि इन दिनों समय कम हो रहा है। :( –

38

(यह डैनियल जवाब देने के लिए एक परिशिष्ट टिप्पणी है, लेकिन मैं वाक्य रचना हाइलाइटिंग और स्वरूपण के लाभ के लिए एक जवाब के रूप में यह पोस्टिंग कर रहा हूँ।)

भाषा अर्थशास्त्र में महत्वपूर्ण प्रारंभिक पूंजी पत्र का उपयोग करने की शैली के बारे में डैनियल का बिंदु अधिक सूक्ष्म और महत्वपूर्ण है जब मैंने स्कैला को सीखा था।

object Case { 
    val lowerConst = "lower" 
    val UpperConst = "UPPER" 

    def main(args: Array[String]) { 
    for (i <- Seq(lowerConst, UpperConst, "should mismatch.").map(Option.apply)) { 
     print("Input '%s' results in: ".format(i)) 
     i match { 
     case Some(UpperConst) => println("UPPER!!!") 
     case Some(lowerConst) => println("lower!") 
     case _ => println("mismatch!") 
     } 
    } 
    } 
} 

भोलेपन से मुझे लगता है कि मैच में मामलों के सभी तक पहुंचने की उम्मीद है |:

निम्नलिखित कोड पर विचार करें। इसके बजाय यह प्रिंट:

Input 'Some(lower)' results in: lower! 
Input 'Some(UPPER)' results in: UPPER!!! 
Input 'Some(should mismatch.)' results in: lower! 

क्या हो रहा है कि case Some(lowerConst) छाया वैल lowerConst और इसी नाम की एक स्थानीय चर जो किसी भी समय एक Some स्ट्रिंग वाली मूल्यांकन किया जाता है से संबंधित जानकारी देगा बनाता है।

इसके आसपास काम करने के लिए स्वीकार्य तरीके हैं, लेकिन सरल नामकरण के लिए शैली मार्गदर्शिका का पालन करना सबसे आसान है।

आप नामकरण परंपरा का पालन नहीं कर सकते, तो के रूप में @reggoodwin नीचे टिप्पणी में बताते हैं, आप चर नाम टिक में है, इसलिए

case Some(`lowerConst`) => println("lower!") 
+1

लीफ के उत्तर में जोड़ना: इस परिदृश्य का वर्णन स्कैला 15.2 में प्रोग्रामिंग में किया गया है। यदि कम मामले के साथ निरंतर प्रारंभ करने के अलावा कोई विकल्प नहीं है तो यह बैक टिक से बच सकता है, उदा। मामला \ 'pi \' => .... – reggoodwin

+1

यदि मामला कुछ (लोअरकॉन्स्ट) वैल लोअर छाया को छाया देता है, तो केस क्यों नहीं है (ऊपरी कॉनस्ट) वैल अपरकॉन्स्ट को छाया दे रहा है? – Adrian

+0

@ लीफ विकलैंड @ डैनियल सी सोब्राल पैटर्न मिलान के सम्मेलन के लिए स्थिरांक मामलों का मूल्य क्या है? जैसे 'वैल अपरकॉन्स्ट =" UPPER_CONST "ठीक है या यह' वैल अपर कोंस्ट = "अपर कोंस्ट" ' – nir

5

लगातार नामों में होना चाहिए की तरह रख सकते हैं ऊपरी ऊंट का मामला यही कारण है, अगर सदस्य अंतिम, अपरिवर्तनीय है और यह एक पैकेज वस्तु या किसी वस्तु, यह माना जा सकता है के अंतर्गत आता है एक निरंतर .... विधि, मूल्य और चर नाम कम ऊंट मामले में होना चाहिए

http://docs.scala-lang.org/style/naming-conventions.html#constants-values-variable-and-methods

+0

पैटर्न मिलान के सम्मेलन के लिए स्थिरांक मामलों का मूल्य क्या है? जैसे वैल 'अपरकॉन्स्ट =" UPPER_CONST "'भाग जावा शैली की तरह ठीक है या यह' val UpperConst = "UpperConst" होना चाहिए – nir

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