Phi*_*rin 6 string swift option-type customstringconvertible
Apple\xe2\x80\x99s 文档说CustomStringConvertible:
\n\n\n\n
description不鼓励直接访问 type\xe2\x80\x99s属性 [\xe2\x80\xa6]。
为什么?
\n\n下面是一个示例,其中 usingdescription对我来说似乎很有用。否则我如何得到相同的结果?
func dontPrintNil(_ s: String?) {\n if s == nil {\n print("placeholder")\n } else {\n print(s!)\n }\n}\n\nlet s: String? = nil\n\ndontPrintNil(s) // \xe2\x86\x92 placeholder\ndontPrintNil(s?.description) // \xe2\x86\x92 placeholder\ndontPrintNil(String(describing: s)) // \xe2\x86\x92 nil\ndontPrintNil("\\(s)") // \xe2\x86\x92 nil\nRun Code Online (Sandbox Code Playgroud)\n
作为提示,同一文档的先前版本如下:
\n\n\n注意:
\nString(instance)适用于任何instance类型的,如果恰好是 ,则返回它。用作通用约束,或访问一致的类型descriptioninstanceCustomStringConvertibleCustomStringConvertibledescription因此,不鼓励
对我来说,这表明他们担心的是人们不必要地不遗余力地将值转换为CustomStringConvertible,而不是使用更方便的String(describing:)。
\n如果您不了解该初始值设定项,则强制转换(或使用通用约束)确实是自然而然的事情。
现在\xe2\x80\x94为什么他们最终从注释中删除\xe2\x80\x9ctherefore\xe2\x80\x9d逻辑链接?也许这只是重写的副作用,或者也许他们觉得事情没那么简单,这意味着我们仍然没有答案。
\n| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |