2011-11-22 18 views
14

私は次のRuby洪庵に取り組んでいます:Ruby Koans:この戻り値の引用符はどこにありますか?

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 

最初assert_equalの前半は私が記入しようとしているものです。このコードは、エラーを与える:。

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

問題私は返り値と一致させる方法についていません。文字列リテラルの戻り値のように見えますが、引用符やバックスラッシュを使用しないで表現する方法はわかりません。私が試してみるものは何もないようです。

ヘルプ?以下の作品にtest_inside_a_method_self_refers_to_the_containing_objectを変更

+1

メソッド '__'とは何ですか? –

+0

これは記入欄のチュートリアルです。このアイデアは、書かれているようにテストに失敗し、必要なコードを記入して渡すことです。私は最初の主張の "<犬の名前" Fido '>の部分を追加しました。 – nrflaw

答えて

1

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]をクリックして、埋めるためにそこ以上のギャップでしたか?私は答えがありますが、あなたはすでに間違ってギャップを埋めるようです。

+0

ありがとう!それはうまくいく。以下に別々のテストがあります: 'def test_inspect_provides_a_more_complete_string_version fido = Dog7.new(" Fido ") assert_equal" <犬の名前 'Fido'> "、fido.inspect end' – nrflaw

24

もう一度それを見つめた後、私は彼らがレッスンでどこに行くのかを考え出しました。最初のassertを "assert_equal fido、fidos_self"に変更するとテストが終了しました。私は、inspectメソッドと同じ出力を与えるエラーによって投げられました。それを手助けしてくれてありがとう。

+0

ありがとうございました。このコーンは最高ではありません。問題は何がポイントですか?私はあなたの提案(私には起こっていなかった)より良いことは何も考えられませんでした。 – codenoob

関連する問題