description
変数を追加するだけでは不十分です。また、クラスが準拠していることを述べる必要があります(以前の Swift バージョンでは以前はそうCustomStringConvertible
呼ばれていました)。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
}
}