2011-11-22 2 views
14
나는 다음과 같은 루비 간화선에서 일하고 있어요

:.Ruby Koans :이 반환 값의 인용 부호는 어디에 있습니까?

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

문제 :

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의 첫 번째 절반은 내가 채우기 위해 노력하고 무엇은이 코드는 오류를 제공 , 나는 반환 값과 일치하는 방법에 붙어 있어요. 나에게 문자열 리터럴 반환 값처럼 보이지만, 따옴표 나 백 슬래시를 사용하지 않고 표현하는 방법을 모르겠습니다. 내가 시도하는 것은 아무것도 작동하지 않는 것 같습니다.

도움 말?

+1

'__' 메서드는 무엇입니까? –

+0

이것은 fill-in-the-blanks 자습서입니다. 아이디어는 작성된대로 테스트를 실패한 다음 필요한 코드를 작성하여 통과시켜야합니다. 나는 첫 번째 단언의 "개 이름"Fido '> 부분을 추가했습니다. – nrflaw

답변

1

다음 작품에 test_inside_a_method_self_refers_to_the_containing_object 변경 :

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 


확인, 거기에 채우기 위해 더 격차했다? 나는 대답을 가지고 있지만, 이미 갭을 잘못 채운 것 같습니다.

+0

감사! 그건 효과가 있어요. 이 아래에 별도의 시험이 있지만'데프 test_inspect_provides_a_more_complete_string_version 스누피 = Dog7.new ("스누피") assert_equal "<개 '스누피'라는 이름이>"도움말에 대한 end' – nrflaw

24

잠깐 쳐다 보면서, 다시 그들이 수업을 어디로 가고 있는지 알았습니다. 첫 번째 어설 션을 "assert_equal fido, fidos_self"로 변경하면 테스트가 통과됩니다. 나는 inspect 메소드와 같은 결과를주는 에러로 인해 던져졌다. 그것을 도와 주셔서 감사합니다.

+0

감사 fido.inspect. 이 코 안은 최고가 아니다. 문제는 요점은 무엇입니까? 나는 너의 제안 (나에게 일어나지 않았던 것)보다 나은 것을 생각할 수 있었다. – codenoob