2011-11-22 30 views
14

tôi đang làm việc trên Ruby Koan sau:.Ruby Koans: Các dấu ngoặc kép trong giá trị trả lại này ở đâu?

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 

Nửa đầu của assert_equal đầu tiên là những gì tôi đang cố gắng để điền vào Mã này cung cấp cho các lỗi:

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

Vấn đề là, tôi bị mắc kẹt về cách so khớp giá trị trả lại. Dường như với tôi như một giá trị trả về chuỗi chữ, nhưng tôi không biết làm thế nào để thể hiện điều đó mà không sử dụng dấu ngoặc kép và/hoặc dấu gạch chéo ngược. Không có gì tôi cố gắng dường như làm việc.

Trợ giúp?

+1

Phương pháp '__' là gì? –

+0

Đây là hướng dẫn điền sẵn. Ý tưởng là để thất bại các bài kiểm tra như bằng văn bản, sau đó điền vào mã cần thiết để có được nó để vượt qua. Tôi đã thêm phần "" của xác nhận đầu tiên. – nrflaw

Trả lời

1

Thay đổi test_inside_a_method_self_refers_to_the_containing_object để công trình sau đây:

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, đã có nhiều khoảng trống để điền vào? Tôi có một câu trả lời, nhưng có vẻ như bạn đã lấp đầy một khoảng trống không chính xác.

+0

Cảm ơn! Điều đó không hiệu quả. Mặc dù có một thử nghiệm riêng biệt dưới đây: 'def test_inspect_provides_a_more_complete_string_version fido = Dog7.new (" Fido ") assert_equal" ", fido.inspect end' – nrflaw

24

Sau khi nhìn chằm chằm vào nó trong một thời gian, một lần nữa, tôi đã tìm ra nơi họ đang đi với bài học. Thay đổi khẳng định đầu tiên thành "assert_equal fido, fidos_self" đã vượt qua bài kiểm tra. Tôi đã được ném bởi lỗi cho đầu ra tương tự như phương pháp kiểm tra, sans dấu ngoặc kép. Cảm ơn vì đã giúp tôi làm việc qua nó.

+0

Cảm ơn sự giúp đỡ. Koan này không phải là tốt nhất. Câu hỏi đặt ra là điểm gì? Tôi có thể nghĩ không có gì tốt hơn đề nghị của bạn (điều đó đã không xảy ra với tôi). – codenoob

Các vấn đề liên quan