我试图让我的类Digit
在Swift 2.0中对该对象调用print时显示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
}
}
答案 0 :(得分:15)
仅添加description
变量是不够的。您还需要声明您的类符合CustomStringConvertible
(以前在Swift版本中称为Printable
)。
如果您命令单击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
}
}