(यह डैनियल के जवाब के लिए एक परिशिष्ट टिप्पणी है, लेकिन मैं इसे सिंटैक्स हाइलाइटिंग और स्वरूपण के लाभ के लिए एक उत्तर के रूप में पोस्ट कर रहा हूं।)
भाषा के शब्दार्थ में महत्वपूर्ण होने के नाते एक प्रारंभिक पूंजी पत्र का उपयोग करने की शैली के बारे में डैनियल की बात अधिक सूक्ष्म और महत्वपूर्ण है, जब मैंने स्कैला सीखा, तब मैंने इसे मूल रूप से श्रेय दिया था।
निम्नलिखित कोड पर विचार करें:
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!")
}
}
}
}
Naively मैंने उम्मीद की होगी कि मैच के सभी मामलों तक पहुंच सके। इसके बजाय यह प्रिंट करता है:
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!")