2014-10-20 41 views
3

無論如何,在一個println語句中使用一個字符串文字作爲參數的一個參數。字符串文字作爲println中func的參數嗎?

func greetings(name: String) -> String { 
    return "Greetings \(name)!" 
} 

我試圖做(我想逃避圍繞地球行星引號)。

println("OUTPUT: \(greetings("Earthling"))") 

您也可以做到這一點:

let name = "Earthling" 
println("OUTPUT: \(greetings(name))") 

而這個工程太:

println(greetings("Earthling")) 

我試過escap在第一個例子中引號,但沒有運氣,它不是特別重要,因爲它只是一個測試,我只是好奇是否有辦法做到這一點,使用字符串文字作爲參數的函數調用打印或包含其他文本的println語句。

+0

您對自己的問題發表了評論。很混亂。 :S – 2014-10-20 13:37:01

+0

啊。我以爲他打算評論你的答案並錯過了。 :) – 2014-10-20 14:06:17

回答

1

從Apple文檔:

表達你寫內插值 字符串中的括號不能包含轉義雙引號(「)或反斜線(\), 並不能包含回車或換行喂。

+0

很酷,謝謝你,總結了一些事情......非常感謝。 – fuzzygoat 2014-10-20 14:06:29

+1

請注意,由於您不能使用反斜槓,因此您也不能在其中放置一個轉義雙引號。唯一的方法是將字符串文字放入一個變量中並使用它。 – 2014-10-20 16:57:31

0

的問題當然不是println而是表達與字符串文字引號的嵌入。 因此

let b = false 
let s1 = b ? "is" : "isn't" 
let s2 = "it \(b ? "is" : "isn't")" // won't compile 

但是作爲NSLog的一班輪'工作得很好這裏

NSLog("it %@", b ? "is" : "isn't") 

注意%@,不%s。在操場上試試後者,看看爲什麼。