我大致有这样的东西,它的工作原理(见https://swiftfiddle.com/hu64oaef4fe23e3cqz6fkn44zq):
import Foundation
struct S : CustomStringConvertible {
var description : String { "foo" }
}
print(S()) // prints foo
print("interpolated \(S())")
但是如果我尝试在Text视图的字符串中使用CustomStringConvertible的插值,比如
var s : S
...
Text("\(s)")
它无法编译,并且在调用示例方法“appendInterpolation”时没有完全匹配。
值得注意的是,如果我使用Text("\(foo.description)")
,它可以编译和工作。它也可以使用Int之类的东西:
let a = 5
...
Text("\(a)")
为什么我的CustomStringConvertible类型的直接插值不起作用?
编辑:文法
1条答案
按热度按时间brqmpdu11#
Text.init
you are using requiressome StringProtocol
.StringProtocol
从CustomStringConvertible
派生而来,而不是相反。是一种选择。