2015-08-20 19 views
13

की आवश्यकता होती है मैं स्विफ्ट के लिए नया हूं और वैकल्पिक अवधारणा को समझने की कोशिश कर रहा हूं। मेरे पास खेल के मैदान में कोड का एक छोटा सा टुकड़ा है जो मुझे "एक शर्त में परिवर्तनीय बाध्यकारी की आवश्यकता है" त्रुटि। क्या कोई कृपया बता सकता है कि मैं इसे कैसे और कैसे ठीक करूं?स्विफ्ट विकल्प - किसी शर्त में परिवर्तनीय बाध्यकारी के लिए प्रारंभकर्ता

मैं केवल "स्कोर 1" के मूल्य के आधार पर "हां" या "नहीं" प्रिंट करना चाहता हूं या नहीं। यहाँ कोड है:

import Cocoa 

class Person { 
    var score1: Int? = 9 

    func sum() { 
     if let score1 { 
      print("yes") 
     } else { 
      print("No") 
     } 
    }//end sum 
}// end person 

var objperson = person() 
objperson.sum() 

उत्तर

10

यदि लेट स्टेटमेंट वैकल्पिक चर लेता है। यदि यह शून्य है, तो अन्य ब्लॉक या कुछ भी निष्पादित नहीं किया गया है। यदि इसका कोई मान है, तो मान को एक अलग चर के रूप में एक गैर-वैकल्पिक प्रकार के रूप में असाइन किया गया है।

if let score1Unwrapped = score1 
{ 
    print(score1Unwrapped) 

} 

else 
{ 
    print("No") 
} 

ही का एक छोटा संस्करण होगा::

print(score1 ?? "No") 

आपके मामले में

तो, निम्नलिखित कोड उत्पादन score1 का मूल्य या "नहीं" अगर वहाँ कोई है होगा , जहां आप वास्तव में वैकल्पिक चर में संग्रहीत मान का उपयोग नहीं करते हैं, तो आप यह भी जांच सकते हैं कि मान शून्य है:

if score1 != nil { 
... 
} 
+0

धन्यवाद LorenzSchaef - मैं मूल रूप से एक ही निष्कर्ष पर पहुंचे। – Harry

+1

अनचाहे मूल्य का उपयोग न करने पर अन्य विकल्प यह है: यदि let _ = score1 {...} – mbehan

0

समस्या if let मानता है कि आप कुछ मूल्य के साथ एक निरंतर score1 बनाना चाहते है। तुम सिर्फ अगर उसमें कोई मान जांच करने के लिए नहीं nil में के रूप में चाहते हैं तो आप इसे नीचे की तरह बस करना चाहिए:

if score1! != nil { 
    // println("yes") 

तो अपना पूरा कोड इस तरह दिखेगा:

class Person { 
    var score1: Int? = 9 

    func sum() { 
     if score1 != nil { 
      println("yes") 
     } 
     else { 
      println("no") 
     } 
    } 
} 

var objperson = Person() 
objperson.sum() 
+0

यह मैं नहीं हूं नील के लिए परीक्षण के लिए स्विफ्ट में इस्तेमाल किया जाने वाला डायम। उपरोक्त उत्तरों, "अगर स्कोर 1 = स्कोर {..." जाने का तरीका है। नोट, अनचाहे चर के समान नाम हो सकते हैं जैसे लिपटे चर के रूप में और वह भी स्विफ्ट कोड में मानक बन गया है। –

3

लेखन
if let score1 { 

समझ में नहीं आता है। आप अगर स्कोर एक मूल्य है देखने के लिए चाहते हैं, का उपयोग

if score1 != nil { 

या

if let score = score1 { 

पिछले मामले बांधता है एक नया गैर वैकल्पिक निरंतर scorescore1 करने के लिए। यह आपको if statement के अंदर score का उपयोग करने देता है।

+0

धन्यवाद विज्ञापनदाता !! – Harry

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