2015-06-17 5 views
7

Sto cercando di rendere la mia classe Digit visualizzare la variabile num ogni volta che la stampa viene chiamata su quell'oggetto, in Swift 2.0. Ho pensato che questo potrebbe essere fatto con una variabile descrizione, ma senza fortuna.Modificare la stampa (oggetto) in Swift 2.0

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

risposta

14

Non è sufficiente aggiungere solo una variabile description. È inoltre necessario specificare che la classe è conforme a CustomStringConvertible (precedentemente noto come Printable nelle versioni precedenti di Swift).

Se si fa clic sul comando, fare clic sulla funzione print, si trova la seguente descrizione.

Scrive la rappresentazione testuale del value, e un ritorno a capo facoltativa, in standard output.

La rappresentazione testuale è ottenuto dalla value usando il suo protocollo conformità sono, nel seguente ordine di preferenza: Streamable, CustomStringConvertible, CustomDebugStringConvertible. Se nessuna di queste conformità è stata trovata, viene creata una rappresentazione di testo predefinita in un modo definito dall'implementazione, in base al tipo e alla struttura del tipo.

La parte della quale che conta qui è che gli oggetti passati a print non sono controllati per se o non hanno un metodo description, ma invece verificato per le cose come se il conformi ai protocolli come CustomStringConvertible che offrono i dati da stampare

Detto questo, tutto ciò che devi fare in questo caso è specificare che la tua classe è conforme a CustomStringConvertible dato che hai già aggiunto una variabile description. Se non lo avessi già aggiunto, il compilatore si lamenterebbe perché questo protocollo richiede l'implementazione della variabile 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 
    } 
}