खोज…


परिचय

सशर्त अभिव्यक्तियाँ, जैसे कि अगर और, जैसे कीवर्ड शामिल हैं, तो एक बूलियन स्थिति के आधार पर विभिन्न कार्यों को करने की क्षमता के साथ स्विफ्ट प्रोग्राम प्रदान करें: सही या गलत। यह खंड स्विफ्ट सशर्त, बूलियन तर्क और टर्नरी बयानों के उपयोग को कवर करता है।

टिप्पणियों

सशर्त विवरणों के बारे में अधिक जानकारी के लिए, द स्विफ्ट प्रोग्रामिंग लैंग्वेज देखें

गार्ड का उपयोग करना

2.0

गार्ड एक शर्त के लिए जाँच करता है, और यदि यह गलत है, तो यह शाखा में प्रवेश करता है। गार्ड चेक ब्रांचों को return , break , या continue (यदि लागू हो) के माध्यम से अपने संलग्न ब्लॉक को छोड़ना होगा; एक कंपाइलर त्रुटि के परिणामस्वरूप ऐसा करने में विफल। इसका यह फायदा है कि जब एक guard लिखा जाता है तो प्रवाह को दुर्घटनावश जारी रहने देना संभव नहीं है (जैसा कि if संभव हो तो संभव है)।

गार्ड का उपयोग करने से घोंसले के स्तर को कम रखने में मदद मिल सकती है, जो आमतौर पर कोड की पठनीयता में सुधार करता है।

func printNum(num: Int) {
    guard num == 10 else {
        print("num is not 10")
        return
    }
    print("num is 10")
}

गार्ड यह भी जांच सकता है कि वैकल्पिक में कोई मान है या नहीं, और फिर इसे बाहरी दायरे में न रखें:

func printOptionalNum(num: Int?) {
    guard let unwrappedNum = num else {
        print("num does not exist")
        return
    }
    print(unwrappedNum)
}

गार्ड where कीवर्ड का उपयोग कर वैकल्पिक अलौकिक और स्थिति जाँच को जोड़ सकता है:

func printOptionalNum(num: Int?) {
guard let unwrappedNum = num, unwrappedNum == 10 else {
    print("num does not exist or is not 10")
    return
}
print(unwrappedNum)
}

बुनियादी शर्तें: यदि-कथन

if कोई कथन जाँचता है कि क्या बूल की स्थिति true :

let num = 10

if num == 10 {
    // Code inside this block only executes if the condition was true.
    print("num is 10")
}

let condition = num == 10   // condition's type is Bool
if condition {
    print("num is 10")
}

if कथन अन्य को स्वीकार करते else if else ब्लॉक, जो वैकल्पिक परिस्थितियों का परीक्षण कर सकते हैं और एक वापसी प्रदान कर सकते हैं:

let num = 10
if num < 10 {  // Execute the following code if the first condition is true.
    print("num is less than 10")
} else if num == 10 {  // Or, if not, check the next condition...
    print("num is 10")
} else {  // If all else fails...
    print("all other conditions were false, so num is greater than 10")
}

बेसिक ऑपरेटर्स जैसे && और || कई स्थितियों के लिए इस्तेमाल किया जा सकता है:

तार्किक और ऑपरेटर

let num = 10
let str = "Hi"
if num == 10 && str == "Hi" {
    print("num is 10, AND str is \"Hi\"")
}

यदि num == 10 गलत थी, तो दूसरे मूल्य का मूल्यांकन नहीं किया जाएगा। इसे शॉर्ट-सर्किट मूल्यांकन के रूप में जाना जाता है।

तार्किक या ऑपरेटर

if num == 10 || str == "Hi" {
    print("num is 10, or str is \"Hi\")
}

यदि num == 10 सत्य है, तो दूसरे मूल्य का मूल्यांकन नहीं किया जाएगा।

तार्किक नहीं ऑपरेटर

if !str.isEmpty {
    print("str is not empty")
}

वैकल्पिक बंधन और "जहां" खंड

अधिकांश अभिव्यक्तियों में उपयोग किए जाने से पहले वैकल्पिक रूप से अपरिवर्तित होना चाहिए। if let एक वैकल्पिक बाध्यकारी है , जो वैकल्पिक मूल्य nil नहीं था, तो सफल होता है:

let num: Int? = 10 // or: let num: Int? = nil

if let unwrappedNum = num {
    // num has type Int?; unwrappedNum has type Int
    print("num was not nil: \(unwrappedNum + 1)")
} else {
    print("num was nil")
}

आप नए बाउंड चर के लिए एक ही नाम का पुनः उपयोग कर सकते हैं, मूल को छायांकित कर सकते हैं:

// num originally has type Int?
if let num = num {
    // num has type Int inside this block
}
1.2 3.0

कॉमा ( , ) के साथ कई वैकल्पिक बाइंडिंग को मिलाएं:

if let unwrappedNum = num, let unwrappedStr = str {
    // Do something with unwrappedNum & unwrappedStr
} else if let unwrappedNum = num {
    // Do something with unwrappedNum
} else {
    // num was nil
}

where एक क्लॉज का उपयोग करके वैकल्पिक बंधन के बाद और बाधाओं को लागू करें:

if let unwrappedNum = num where unwrappedNum % 2 == 0 {
    print("num is non-nil, and it's an even number")
}

यदि आप रोमांच महसूस कर रहे हैं, तो किसी भी वैकल्पिक बाइंडिंग की संख्या को सीमित करें और where क्लॉस हैं:

if let num = num                           // num must be non-nil
    where num % 2 == 1,                    // num must be odd
    let str = str,                         // str must be non-nil
    let firstChar = str.characters.first   // str must also be non-empty
    where firstChar != "x"                 // the first character must not be "x"
{
    // all bindings & conditions succeeded!
}
3.0

स्विफ्ट 3, में where खंड प्रतिस्थापित किया गया है ( एसई-0099 ): बस एक का उपयोग , वैकल्पिक बाइंडिंग और बूलियन की स्थिति अलग करने के लिए।

if let unwrappedNum = num, unwrappedNum % 2 == 0 {
    print("num is non-nil, and it's an even number")
}

if let num = num,                           // num must be non-nil
    num % 2 == 1,                           // num must be odd
    let str = str,                          // str must be non-nil
    let firstChar = str.characters.first,   // str must also be non-empty
    firstChar != "x"                        // the first character must not be "x"
{
    // all bindings & conditions succeeded!
}

टर्नरी ऑपरेटर

टर्नरी ऑपरेटर के उपयोग से एकल लाइन में स्थितियों का मूल्यांकन भी किया जा सकता है:

यदि आप न्यूनतम और अधिकतम दो चर निर्धारित करना चाहते हैं, तो आप बयानों का उपयोग कर सकते हैं, जैसे:

let a = 5
let b = 10
let min: Int

if a < b {
    min = a 
} else {
    min = b 
}

let max: Int

if a > b {
    max = a 
} else {
    max = b 
}

टर्नेरी सशर्त संचालक एक शर्त लेता है और दो में से एक मान लौटाता है, यह इस बात पर निर्भर करता है कि वह शर्त सही थी या गलत। वाक्य विन्यास इस प्रकार है: यह अभिव्यक्ति होने के बराबर है:

(<CONDITION>) ? <TRUE VALUE> : <FALSE VALUE>

उपरोक्त कोड नीचे के रूप में टर्नरी सशर्त ऑपरेटर का उपयोग करके फिर से लिखा जा सकता है:

let a = 5
let b = 10
let min = a < b ? a : b
let max = a > b ? a : b

पहले उदाहरण में, हालत <b है। यदि यह सही है, तो मिन को वापस सौंपा गया परिणाम ए का होगा; यदि यह गलत है, तो परिणाम b का मूल्य होगा।

नोट: क्योंकि दो संख्याओं का अधिक या छोटा होना इस तरह का एक सामान्य ऑपरेशन है, स्विफ्ट मानक पुस्तकालय इस उद्देश्य के लिए दो कार्य प्रदान करता है: अधिकतम और न्यूनतम।

निल-कोलेसिंग ऑपरेटर

Nil-coalescing ऑपरेटर <OPTIONAL> ?? <DEFAULT VALUE> <OPTIONAL> <OPTIONAL> ?? <DEFAULT VALUE> हटा देता है यदि इसमें कोई मान है, या nil है तो <DEFAULT VALUE> लौटाता है। <OPTIONAL> हमेशा एक वैकल्पिक प्रकार का होता है। <DEFAULT VALUE> को <OPTIONAL> अंदर संग्रहित प्रकार से मेल खाना चाहिए।

निल-कोलेसिंग ऑपरेटर नीचे दिए गए कोड के लिए शॉर्टहैंड है जो एक टर्नरी ऑपरेटर का उपयोग करता है:

a != nil ? a! : b

यह नीचे दिए गए कोड द्वारा सत्यापित किया जा सकता है:

(a ?? b) == (a != nil ? a! : b) // ouputs true

एक उदाहरण के लिए समय

let defaultSpeed:String = "Slow"
var userEnteredSpeed:String? = nil

print(userEnteredSpeed ?? defaultSpeed) // ouputs "Slow"

userEnteredSpeed = "Fast"
print(userEnteredSpeed ?? defaultSpeed) // ouputs "Fast"


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow