如何更改Swift中自定义结构和类的默认嵌入字符串

如何更改Swift中自定义结构和类的默认嵌入字符串,swift,Swift,假设我有一个代码结构: struct Point { var x = 0.0 var y = 0.0 } var p = Point(x: 5.0, y: 3.0) println("\(p)") 我会得到: V6<AppName>8Point (has 2 children) V68Point(有2个子项) 有没有办法把它转换成定制的东西?在Objective-C中,我相信description()方法已经涵盖了这一点,但这在这里不起作用。是的,您可以!看看这本书

假设我有一个代码结构:

struct Point {
  var x = 0.0
  var y = 0.0
}

var p = Point(x: 5.0, y: 3.0)
println("\(p)")
我会得到:

V6<AppName>8Point (has 2 children)
V68Point(有2个子项)

有没有办法把它转换成定制的东西?在Objective-C中,我相信
description()
方法已经涵盖了这一点,但这在这里不起作用。

是的,您可以!看看这本书

文档中的示例代码:

struct MyType: Printable {
    var name = "Untitled"
    var description: String {
        return "MyType: \(name)"
    }
}

let value = MyType()
println("Created a \(value)")
// prints "Created a MyType: Untitled"

您需要实现该协议。只需让您的类实现协议并添加以下属性:

var description: String { get }

对于最近来到这里(Swift 2.0)的任何人来说,可打印协议已重命名为CustomStringConvertible

您几乎是对的。这是一个
description
属性,不是方法我知道文档是这么说的,但是在我的机器上,如果我将上面的内容剪切并粘贴到“import Cocoa”行下面的操场上,我会得到:创建了一个V11lldb_expr_06MyType(有一个孩子),有人可以使用它吗?结果是,它在操场/REPL中被破坏了,但在编译代码中没有。