2016-07-30 8 views
7

में स्ट्रिंग इंटरपोलेशन और स्ट्रिंग प्रारंभकर्ता के बीच अंतर मैं स्ट्रिंग इंटरपोलेशन या स्ट्रिंग प्रारंभकर्ता का उपयोग कर स्ट्रिंग के रूप में एक int, float, double पढ़ सकता हूं। परिणाम हमेशा एक ही है।स्विफ्ट

var a: Int = 2 

var c: Character = "e" 

var d: String = "\(a)\(c)" 

OR 

var d: String = String(a) + String(c) 

परिणाम समान है। डी मान "2e"

मुझे मिला एकमात्र अंतर यह है कि स्ट्रिंग इंटरपोलेशन() को डबल कोट्स के अंदर उपयोग किया जा सकता है, जबकि स्ट्रिंग() को डबल कोट्स के अंदर उपयोग नहीं किया जा सकता है।

क्या यह सब है? क्या मुझसे कोई चूक हो रही है?

उत्तर

9

स्ट्रिंग इंटरपोलेशन "\(item)" आपको आइटम पर description पर कॉल करने का परिणाम देता है। String(item)String प्रारंभकर्ता को कॉल करता है और String मान देता है, जो अक्सर String जैसा होता है जो आपको स्ट्रिंग इंटरपोलेशन से मिलता है, लेकिन इसकी गारंटी नहीं है।

class MyClass: CustomStringConvertible { 
    var str: String 

    var description: String { return "MyClass - \(str)" } 

    init(str: String) { 
     self.str = str 
    } 
} 

extension String { 
    init(_ myclass: MyClass) { 
     self = myclass.str 
    } 
} 

let mc = MyClass(str: "Hello") 
String(mc) // "Hello" 
"\(mc)"  // "MyClass - Hello" 
:

निम्नलिखित काल्पनिक उदाहरण पर विचार करें