Swift中字符串插值和字符串初始值设定项的区别
我可以使用字符串插值或字符串初始值设定项将int、float、double作为字符串读取。结果总是一样的Swift中字符串插值和字符串初始值设定项的区别,swift,string,Swift,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” 我发现的唯一区别是字符串插值()可以在双引号内使用,而字符串()不能在双引号内使用 就这些吗?我在这里遗漏了什么吗?字符串插值“\(项目)”
var a: Int = 2
var c: Character = "e"
var d: String = "\(a)\(c)"
OR
var d: String = String(a) + String(c)
结果是一样的。d的值为“2e”
我发现的唯一区别是字符串插值()可以在双引号内使用,而字符串()不能在双引号内使用
就这些吗?我在这里遗漏了什么吗?字符串插值
“\(项目)”
提供对项目调用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"