【发布时间】:2017-08-08 12:58:07
【问题描述】:
当专门处理非可选的String 值时,字符串插值和字符串连接有什么区别?
struct MyModel {
let value1: String
let value2: String
var displayNameByConcatenation: String {
return value1 + "-" + value2
}
var displayNameByInterpolation: String {
return "\(value1)-\(value2)"
}
}
- 是否存在
displayNameByConcatenation和displayNameByInterpolation不同的情况?喜欢长 unicode 字符串? - 是否有可能以某种方式覆盖运算符
+的行为或插值的行为以使它们在上述示例中有所不同? - 一个比另一个快/慢吗?
请注意,从this question 中我们了解到字符串插值将使用 CustomStringConvertible 的 description。但是String 连接(运算符+)是否也调用description?
【问题讨论】:
-
我认为我们可以放心地假设 string 的
description返回字符串本身,这意味着没有区别。 -
您是否尝试覆盖
+?你测量速度了吗? -
@MartinR 速度测试完成,使用您的一些 CharacterSet 代码来获得乐趣。
标签: swift string swift3 string-concatenation string-interpolation