swift - Swift 中字符串插值和字符串初始值设定项之间的区别

标签 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”

我发现的唯一区别是字符串插值 () 可以在双引号内使用,而 String() 不能在双引号内使用。

就这些了吗?我在这里遗漏了什么吗?

最佳答案

字符串插值"\(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"

关于swift - Swift 中字符串插值和字符串初始值设定项之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41429485/

相关文章:

swift - 使用 If 语句检查 3 种可能性

ios - 如何获取索引(:) to return multiple indices?

android - 高效访问配置文件中的多个字符串之一

用于删除口音的 php iconv translit : not working as excepted?

javascript - 两个看似相等的字符串在 javascript 中不相等

ios - 如何在 Swift 3 的 iOS 上的 SceneKit 中创建循环视频素材?

ios - 增加可滚动内容的高度(从顶部开始)

swift - 如何允许粘贴(cmd+v)到 NSTableView 单元格中?

java - 在一行中仅打印字符串的前 5 个字符

javascript - JavaScript 中不区分大小写的字符串替换?