2015-06-17 18 views
7

Sınıfıma Digit belgesini, bu nesneye yazdırıldığında, Swift 2.0'de num değişkenini göstermeye çalışıyorum. Bunun bir açıklama değişkeni ile yapılabileceğini düşündüm, ama şans yok.Swift 2.0 içindeki yazdırma (Nesne) görüntülerini değiştirme

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 
    } 
} 

cevap

14

Sadece bir description değişken eklemek için yeterli değildir. Sınıfınızın CustomStringConvertible (eski Swift sürümlerinde eskiden Printable olarak bilinir) ile uyumlu olduğunu da belirtmeniz gerekir.

print işlevini tıklatırsanız, aşağıdaki açıklamayı bulabilirsiniz.

value metinsel gösterimi ve standart çıkış içine isteğe bağlı bir yeni satır, yazar.

metinsel gösterimi aşağıdaki tercih sırasıyla olarak kendi protokol uygunsuzlukları kullanılarak value elde edilir: Streamable, CustomStringConvertible, CustomDebugStringConvertible. bu uyumsuzlukların hiçbiri bulunmazsa, türün türüne ve yapısına bağlı olarak, uygulama tanımlı bir şekilde varsayılan metin temsili oluşturulur.

print geçirilen nesneler onlar description yöntem olsa da olmasa da kontrol, ancak bunun yerine verileri sunan CustomStringConvertible gibi protokollere uygun olup olmadığı gibi şeyler için işaretli olmadığından emin olmak burada önemli olan kısmı basılmak üzere.

Bu durumda, yapmanız gereken tek şey, zaten bir description değişkeni eklediğiniz için sınıfınızın CustomStringConvertible ile uyumlu olduğunu belirtmektir. Bunu daha önce eklemediyseniz, derleyici bu kuralın description değişkeninin uygulanmasını gerektirdiğinden şikayetçi olacaktır.

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 
    } 
} 
İlgili konular