我可以使用字符串插值或字符串初始化程序将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"
我发现的唯一区别是字符串interpolation()可以在双引号内使用,而String()不能在双引号内使用。
这就是全部吗?我在这里错过了什么吗?
答案 0 :(得分:10)
字符串插值"\(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"