更改Swift 2.0中显示的print(Object)

Aar*_*ron 8 printing swift swift2

在Swift 2.0中,每当在该对象上调用print 时,我都会尝试让我的类Digit显示num变量.我认为这可能是用描述变量完成的,但没有运气.

class Digit {

  var num: Int
  var x: Int
  var y: Int
  var box: Int
  var hintList: [Int] = []
  var guess: Bool = false

  var description: String {
    let string = String(num)
    return string
  }
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*lum 15

仅添加description变量是不够的.您还需要声明您的类符合CustomStringConvertible(以前称为Printable早期的Swift版本).

如果您单击该print功能,则会找到以下说明.

将文本表示value和可选换行符写入标准输出.

文本表示从得到的value使用其的协议符合项,按优先顺序如下:Streamable, CustomStringConvertible,CustomDebugStringConvertible.如果未找到这些一致性,则基于类型类型和结构,以实现定义的方式构造默认文本表示.

这里重要的部分是传递给它的对象print不会检查它们是否有description方法,而是检查是否符合CustomStringConvertible提供数据的协议.

话虽这么说,在这种情况下您需要做的就是指定您的类符合,CustomStringConvertible因为您已经添加了一个description变量.如果你还没有添加它,编译器会抱怨,因为这个协议要求description实现变量.

class Digit: CustomStringConvertible {
    var num: Int
    var x: Int
    var y: Int
    var box: Int
    var hintList: [Int] = []
    var guess: Bool = false

    var description: String {
        let string = String(num)
        return string
    }
}
Run Code Online (Sandbox Code Playgroud)