我可以使用字符串插值或String初始值设定项将int,float,double读取为字符串。结果总是一样的。
var a: Int = 2 var c: Character = "e" var d: String = "\(a)\(c)" OR var d: String = String(a) + String(c)
结果是一样的。d的值为“ 2e”
我发现的唯一区别是,字符串插值()可以在双引号内使用,而String()不能在双引号内使用。
这就是全部?我在这里想念什么吗?
字符串插值"\(item)"为您提供了调用description该项目的结果。 String(item)调用String初始化程序并返回一个String值,该值通常与String从字符串插值中获得的值相同,但不能保证。
"\(item)"
description
String(item)
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"