Swiftでクラスなどのインスタンスをprint()した場合、その中身がなにであるのかを確認できません。(lldbでpoすればいいのだけなんですが。。。)そのような場合CustomStringConvertibleというprotocolを使えばカスタマイズした文字をprint()などに表示できます。
class Novel : CustomStringConvertible{ var author: String! var kana: String! init(_author: String, _kana: String) { self.author = _author self.kana = _kana } var description: String { return "\(self.author!)(\(self.kana!))" } }
上記のような感じでCustomStringConvertibleはprotocolなので継承して使います。protocolの中にdescriptionを持っていますのでそれを利用します。
let novel1 = Novel(_author: "George Orwell", _kana: "ジョージ・オーウェル") print(novel1)
上記コードを実行するとdescriptionが呼ばれ「“George Orwell(ジョージ・オーウェル)\n”」が出力されました。下記コードのようにCustomStringConvertibleはstructでも利用できます。
struct Novel : CustomStringConvertible { var author: String! var description: String { return self.author } } let Novel2 = Novel(author: "James Patrick Hogan") print(Novel2)