2017-04-13 76 views
0
callfunc(string: "\(string)") 

    callfunc(string: string) 

我打電話相同的函數具有相同的字符串值,但方法不同...... 讓我知道它有什麼不同?我也想知道在內存消耗方面。「(字符串)」和字符串之間的區別?

+5

[夫特語言指南:字符串內插](https://developer.apple.com/library/content/documentation/Swift/Conceptual/ Swift_Programming_Language/StringsAndCharacters.html#// apple_ref/doc/uid/TP40014097-CH7-ID292) – vadian

回答

2

沒有差別,"\()"如果你的字符串是一樣的東西

let someInt: Int = 20 
print("my integer is \(someInt)") //"my integer is 20" 

即不String在首位使用。

沒有記憶的區別,因爲在StringSwift不引用類型,它是Struct,所以你傳遞的string拷貝到你的callfunc,而不是引用。

+0

如果您的字符串變量是隱式解包的可選項,則會有所不同。在這種情況下,您傳遞「可選(字符串)」作爲字符串值 – Kubba

0

當您的字符串隱式解包可選時,有區別。考慮例如:

func some(string: String) 
{ 
    print(string) 
} 

let string: String! = "s" 

some(string: string) 
some(string: "\(string)") 

的輸出將是:

s 
Optional("s") 
相關問題