Swift 为什么访问CustomStringConvertible’;不鼓励别人的描述?

Swift 为什么访问CustomStringConvertible’;不鼓励别人的描述?,swift,string,optional,customstringconvertible,Swift,String,Optional,Customstringconvertible,对于CustomStringConvertible来说: 不鼓励直接访问类型的说明属性[…] 为什么? 下面是一个使用description对我来说很有用的例子。否则我怎么能得到同样的结果呢 func dontPrintNil(_ s: String?) { if s == nil { print("placeholder") } else { print(s!) } } let s: String? = nil dontPrintNi

对于
CustomStringConvertible
来说:

不鼓励直接访问类型的
说明
属性[…]

为什么?


下面是一个使用
description
对我来说很有用的例子。否则我怎么能得到同样的结果呢

func dontPrintNil(_ s: String?) {
   if s == nil {
        print("placeholder")
    } else {
        print(s!)
    }
}

let s: String? = nil

dontPrintNil(s)                          // → placeholder
dontPrintNil(s?.description)             // → placeholder
dontPrintNil(String(describing: s))      // → nil
dontPrintNil("\(s)")                     // → nil
我读了以下内容:“
String(实例)
将适用于任何类型的
实例
,如果
实例
恰好是
CustomStringConvertible
,则返回其
说明
。因此,不鼓励将
CustomStringConvertible
用作一般约束,或直接访问符合条件的
说明
。”(强调我的。)我看不出第一句话是如何暗示第二句的。文档是否假设我们总是希望转换成字符串成功?