我正在尝试自定义description
类型(例如Collection
)的Array
,特别是当Iterator.Element
是某种特定类型时。
但是,我不确定该怎么做,因为一旦尝试按照Collection
协议扩展CustomStringConvertible
,编译器就会抱怨Collection
不能继承子句(如果我未声明CustomStringConvertible
符合性,则description
的实现似乎会被忽略)。
是否可以为description
类型自定义Collection
?
// Attempt 1
extension Collection: CustomStringConvertible where Iterator.Element == MyType {
var description: String {
// this produces a compile error
return "something"
}
}
// Attempt 2
extension Collection where Iterator.Element == MyType {
var description: String {
// this is ignored
return "something"
}
}
更一般而言,是否可以为内置类型自定义description
?
extension Double: CustomStringConvertible {
var description: String { return "hi" }
// this is also ignored + warning by compiler
}