前面在REPL中显示字符串时,使用的都是print和println方法。下面重温这些方法,看看如何使用它们来显示更复杂的字符串。 方法print和println提供的便利之一是,不费吹灰之力就能将变量的值嵌入到其他文本中。如果你熟悉C或Objective-C,就知道设置文本输出格式需要输入的代码非常多,最典型的例子是C语言中的方法printf和Objective-C中的方法NSLog()。请看下面的Objective-C代码片段: NSString *myFavoriteCity = "New Orleans"; NSString *myFavoriteFood = "Seafood Gumbo"; NSString *myFavoriteRestaurant = "Mulates"; NSInteger yearsSinceVisit = 3; NSLog(@"When I visited %@ %d years ago, I went to %@ and ordered %@.", → myFavoriteCity, yearsSinceVisit, myFavoriteRestaurant, myFavoriteFood); 如果你能看懂这段代码,就知道它很糟糕,其中的原因有多个。首先,变量的位置与其值将显示的位置不同,这要求你以正确的顺序指定变量,否则结果将不符合预期。其次,设置两种类型不同的变量的格式时,需要使用不同格式设置代码:对于NSString变量,需要使用%@;对于NSInteger变量,需要使用%d(如果你不熟悉格式设置代码,也不用担心,因为Swift不使用它们)。 在Swift中,无需使用格式设置代码,也无需考虑格式设置代码和变量的顺序。相反,只需将变量放在要显示的位置,它们就会与其他文本一起显示出来。下面是上述Objective-C代码的Swift版本: 56> let myFavoriteCity = "New Orleans" myFavoriteCity: String = "New Orleans" 57> let myFavoriteFood = "Seafood Gumbo" myFavoriteFood: String = "Seafood Gumbo" 58> let myFavoriteRestaurant = "Mulates" myFavoriteRestaurant: String = "Mulates" 59> let yearsSinceVisit = 3 yearsSinceVisit: Int = 3 60> println("When I visited (myFavoriteCity) (yearsSinceVisit) years ago, → I went to (myFavoriteRestaurant) and ordered (myFavoriteFood).") When I visited New Orleans 3 years ago, I went to Mulates and ordered → Seafood Gumbo. 61> 第60行中用于显示变量的标记非常简单,其中使用了嵌入表示法()来引用第56~59行声明的四个常量。这种表示法非常简洁,如果将其与前述语言的处理方式进行比较,这一点尤其明显。 同样,将合并得到的字符串赋给变量与显示它一样简单: 61> let sentence = "When I visited (myFavoriteCity) (yearsSinceVisit) years → ago, I went to (myFavoriteRestaurant) and ordered (myFavoriteFood)." sentence: String = "When I visited New Orleans 3 years ago, I went to Mulates → and ordered Seafood Gumbo." 62>