Kotlin
सशर्त बयान
खोज…
टिप्पणियों
जावा के switch
विपरीत, when
स्टेटमेंट में कोई गिरावट नहीं होती है। इसका मतलब यह है, कि यदि किसी शाखा का मिलान किया जाता है, तो नियंत्रण प्रवाह उसके निष्पादन के बाद वापस आ जाता है और किसी break
स्टेटमेंट की आवश्यकता नहीं होती है। यदि आप कई तर्कों के लिए बावड़ियों को संयोजित करना चाहते हैं, तो आप अल्पविरामों द्वारा अलग किए गए कई तर्क लिख सकते हैं:
when (x) {
"foo", "bar" -> println("either foo or bar")
else -> println("didn't match anything")
}
मानक अगर-बयान
val str = "Hello!"
if (str.length == 0) {
print("The string is empty!")
} else if (str.length > 5) {
print("The string is short!")
} else {
print("The string is long!")
}
अन्य शाखाएँ सामान्य if-बयानों में वैकल्पिक हैं।
यदि-कथन एक अभिव्यक्ति के रूप में
अगर-कथन अभिव्यक्ति हो सकते हैं:
val str = if (condition) "Condition met!" else "Condition not met!"
ध्यान दें कि यदि -statement को अभिव्यक्ति के रूप में उपयोग किया जाता है if
else
-ब्रंच वैकल्पिक नहीं है।
यह एक बहु-पंक्ति संस्करण के साथ घुंघराले कोष्ठक और कई else if
साथ भी किया जा सकता else if
कथन।
val str = if (condition1){
"Condition1 met!"
} else if (condition2) {
"Condition2 met!"
} else {
"Conditions not met!"
}
TIP: कोटलिन आपके लिए वेरिएबल के प्रकार का अनुमान लगा सकता है, लेकिन यदि आप टाइप के बारे में सुनिश्चित होना चाहते हैं, तो इसे वेरिएबल पर एनोटेट करें जैसे:
val str: String =
यह टाइप लागू करेगा और इसे पढ़ना आसान बना देगा।
जब-अगर-अगर-अगर चेन के बजाय-बयान
जब-बयान एक बयान के लिए एक विकल्प के साथ कई और-अगर-शाखाओं है:
when {
str.length == 0 -> print("The string is empty!")
str.length > 5 -> print("The string is short!")
else -> print("The string is long!")
}
एक ही-इफ- चेन का उपयोग करके लिखा गया समान कोड:
if (str.length == 0) {
print("The string is empty!")
} else if (str.length > 5) {
print("The string is short!")
} else {
print("The string is long!")
}
इफ-स्टेटमेंट की तरह ही, दूसरी शाखा वैकल्पिक है, और आप जितनी चाहें उतनी शाखाएँ या कुछ शाखाएँ जोड़ सकते हैं। आपकी बहु-शाखाएँ भी हो सकती हैं:
when {
condition -> {
doSomething()
doSomeMore()
}
else -> doSomethingElse()
}
जब-कथन तर्क से मेल खाता है
जब एक तर्क दिया जाता है, when
स्थापन क्रम में शाखाओं के विरुद्ध तर्क से मेल खाता है। मिलान ==
ऑपरेटर का उपयोग करके किया जाता है जो अशक्त जांच करता है और equals
फ़ंक्शन का उपयोग करके ऑपरेटर की तुलना करता है। पहले मिलान वाले को निष्पादित किया जाएगा।
when (x) {
"English" -> print("How are you?")
"German" -> print("Wie geht es dir?")
else -> print("I don't know that language yet :(")
}
जब स्टेटमेंट में कुछ और एडवांस मिलान के विकल्प भी पता होते हैं:
val names = listOf("John", "Sarah", "Tim", "Maggie")
when (x) {
in names -> print("I know that name!")
!in 1..10 -> print("Argument was not in the range from 1 to 10")
is String -> print(x.length) // Due to smart casting, you can use String-functions here
}
जब-तब अभिव्यक्ति के रूप में बयान
जैसे अगर, जब अभिव्यक्ति के रूप में भी इस्तेमाल किया जा सकता है:
val greeting = when (x) {
"English" -> "How are you?"
"German" -> "Wie geht es dir?"
else -> "I don't know that language yet :("
}
print(greeting)
एक अभिव्यक्ति के रूप में उपयोग किए जाने के लिए, जब-स्टेटमेंट संपूर्ण होना चाहिए, अर्थात या तो एक और शाखा होनी चाहिए या सभी संभावनाओं को दूसरी तरह से शाखाओं के साथ कवर करना चाहिए।
जब-तब बयानों के साथ
when
enum
मूल्यों से मेल खाने के लिए इस्तेमाल किया जा सकता है:
enum class Day {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
fun doOnDay(day: Day) {
when(day) {
Day.Sunday -> // Do something
Day.Monday, Day.Tuesday -> // Do other thing
Day.Wednesday -> // ...
Day.Thursday -> // ...
Day.Friday -> // ...
Day.Saturday -> // ...
}
}
आप दूसरे मामले लाइन (में देख सकते हैं Monday
और Tuedsay
) यह भी दो या अधिक गठबंधन करने के लिए संभव है enum
मूल्यों।
यदि आपके मामले समाप्त नहीं होते हैं, तो संकलन त्रुटि दिखाएगा। आप डिफ़ॉल्ट मामलों को संभालने के लिए else
का उपयोग कर सकते हैं:
fun doOnDay(day: Day) {
when(day) {
Day.Monday -> // Work
Day.Tuesday -> // Work hard
Day.Wednesday -> // ...
Day.Thursday -> //
Day.Friday -> //
else -> // Party on weekend
}
}
हालांकि, if-then-else
निर्माण का उपयोग करके ऐसा किया जा सकता है, when
लापता enum
मूल्यों का ध्यान रखता है और इसे और अधिक प्राकृतिक बनाता है।
चेक यहाँ kotlin बारे में अधिक जानकारी के लिए enum