2011-11-22 15 views
14

Sto lavorando sui seguenti Rubino Koan:.Ruby Koans: dove sono le virgolette in questo valore di ritorno?

class Dog7 
    attr_reader :name 

    def initialize(initial_name) 
    @name = initial_name 
    end 

    def get_self 
    self 
    end 

    def to_s 
    __ 
    end 

    def inspect 
    "<Dog named '#{name}'>" 
    end 
end 

def test_inside_a_method_self_refers_to_the_containing_object 
    fido = Dog7.new("Fido") 

    fidos_self = fido.get_self 
    assert_equal "<Dog named 'Fido'>", fidos_self 
end 

def test_to_s_provides_a_string_version_of_the_object 
    fido = Dog7.new("Fido") 
    assert_equal __, fido.to_s 
end 

La prima metà del primo assert_equal è quello che sto cercando di colmare Questo codice dà l'errore:

<"<Dog named 'Fido'>"> expected but was <<Dog named 'Fido'>>. 

Il problema è, sono bloccato su come abbinare il valore di ritorno. Mi sembra un valore restituito da stringa letterale, ma non so come esprimerlo senza usare le virgolette e/oi backslash. Niente di ciò che provo sembra funzionare.

Aiuto?

+1

Qual è il metodo '__'? –

+0

Questo è un tutorial per riempire gli spazi vuoti. L'idea è di fallire il test come scritto, quindi inserire il codice necessario per farlo passare. Ho aggiunto il "" porzione del primo assert. – nrflaw

risposta

1

Modifica test_inside_a_method_self_refers_to_the_containing_object per seguenti opere:

def test_inside_a_method_self_refers_to_the_containing_object 
    fido = Dog7.new("Fido") 

    fidos_self = fido.get_self 
    assert_equal "<Dog named 'Fido'>", fidos_self.inspect # .inspect added. 
end 


Ok, erano lì più lacune da riempire? Ho una risposta, ma sembra che tu abbia già riempito un vuoto in modo errato.

+0

Grazie! Questo funziona. Anche se c'è un test separato sotto questi: 'def test_inspect_provides_a_more_complete_string_version fido = Dog7.new ("Fido") assert_equal "", fido.inspect FINE' – nrflaw

24

Dopo averlo fissato per un po ', di nuovo, ho capito dove stavano andando con la lezione. Cambiando il primo assert a "assert_equal fido, fidos_self" ha superato il test. Sono stato scagliato dall'errore dando lo stesso risultato del metodo inspect, senza virgolette. Grazie per avermi aiutato a superarlo.

+0

Grazie per l'aiuto. Questo koan non è il migliore. La domanda è: qual è il punto? Non riuscivo a pensare a niente di meglio del tuo suggerimento (che non mi era mai venuto in mente.) – codenoob

Problemi correlati