如何更改为Swift中的类型显示的文本表示?

如何更改为Swift中的类型显示的文本表示?,第1张

概述如何修改在字符串插值中显示文本输出? 可打印协议看起来最明显,但它在字符串插值和打印实例时被忽略,例如: struct Point : Printable{ var x = 0 var y = 0 var description : String { return "(\(x), \(y))" } func toString() -> 如何修改在字符串插值中显示的文本输出?

可打印协议看起来最明显,但它在字符串插值和打印实例时被忽略,例如:

struct Point : Printable{    var x = 0    var y = 0    var description : String {        return "(\(x),\(y))"    }    func toString() -> String {        return description    }}

同样,toString()约定也不起作用:

var p = Point(x: 10,y: 20)println(p)                   // V11lldb_expr_05Point (has 2 children)println("\(p)")              // V11lldb_expr_05Point (has 2 children)println(p.description)       // (10,20)println("\(p.description)")  // (10,20)

在PlayGround中的行为也不同,它使用它自己的String表示结构,即:

p // {x 10,y 20}

有一种方法,我可以改变实例的显示方式?

Swift 2& 3

在Swift 2中,Printable变成了customstringconvertible。例如,您可以创建一些结构体:

struct Animal : customstringconvertible {    let type : String    var description: String {        return type    }}struct Farm : customstringconvertible {    let name : String    let animals : [Animal]    var description: String {        return "\(name) is a \(self.dynamicType) with \(animals.count) animal(s)."    }}

如果您初始化它们:

let oldMajor = Animal(type: "Pig")let Boxer = Animal(type: "Horse")let murIEl = Animal(type: "Goat")let orwellsFarm = Farm(name: "Animal Farm",animals: [oldMajor,Boxer,murIEl])

自定义说明会显示在您的 *** 场中:

另请参见CustomDeBUGStringConvertible,您可以在调试期间使用它进行更详细的输出。

用法注意

您可以从任何类型初始化字符串,而不实现此协议。例如:

为此,文件说:

Using customstringconvertible as a generic constraint,or accessing a conforming type’s description directly,is therefore discouraged.

总结

以上是内存溢出为你收集整理的如何更改为Swift中的类型显示的文本表示?全部内容,希望文章能够帮你解决如何更改为Swift中的类型显示的文本表示?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1060742.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存