【问题标题】:Ruby Koans Quest 203(about_classes)- failed with rakeRuby Koans Quest 203(about_classes)- rake 失败
【发布时间】:2018-10-25 16:00:56
【问题描述】:

我在填写预期输出并调用 rake 时遇到了问题。这是我的设置或代码有问题吗?

josephs-MacBook-Air:koans jj$ rake /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby path_to_enlightenment.rb AboutClasses#test_inside_a_method_self_refers_to_the_containing_object 已经破坏了你的业力。

师父说:你还没有开悟。我感觉到 挫折。不要害怕寻求帮助。

您寻求的答案...预期“FILL ME IN”等于

请仔细思考以下代码:
/Users/jj/Downloads/koans/about_classes.rb:162:in `test_inside_a_method_self_refers_to_the_contain_object'

请记住,到目前为止,沉默有时是您的最佳答案 [................................X______________] 203/282

有问题的代码是:

class Dog7
    attr_reader :name

    def initialize(initial_name)
      @name = initial_name
    end

    def get_self
      self
    end

    def to_s
      @name
    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 __, fidos_self
  end

我把填充的assest_equal设置为

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

它爆炸了。

/Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in require': /Users/jtacuyan/Downloads/koans/about_classes.rb:162: syntax error, unexpected tIDENTIFIER, expecting keyword_do or '{' or '(' (SyntaxError) assert_equal <Dog named 'Fido'>, fidos_self ^ /Users/jj/Downloads/koans/about_classes.rb:162: syntax error, unexpected ',' assert_equal <Dog named 'Fido'>, fidos_self ^ from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:54:in require' 来自 path_to_enlightenment.rb:28:in <main>' rake aborted! Command failed with status (1): [/System/Library/Frameworks/Ruby.framework/...] /Users/jj/Downloads/koans/Rakefile:10:inblock in ' 任务:TOP => default => test(通过运行任务查看完整跟踪 --trace)

我可以在 irb 上很好地执行它。

irb(main):016:0> fido = Dog7.new("Fido")
=> <Dog named 'Fido'>
irb(main):017:0> fido
=> <Dog named 'Fido'>
irb(main):018:0> fido.name
=> "Fido"
irb(main):019:0> fido.get_self
=> <Dog named 'Fido'>
irb(main):020:0> fidos_self = fido.get_self
=> <Dog named 'Fido'>
irb(main):021:0> fidos_self
=> <Dog named 'Fido'>

【问题讨论】:

    标签: ruby


    【解决方案1】:

    您忘记了断言代码中的 "。

    assert_equal "<Dog named 'Fido'>", fidos_self
    

    更新

    你应该断言fidos_self引用它自己,即实例化的Dog7:fido

    assert_equal fido, fidos_self
    

    这正是这个测试应该做的。

    【讨论】:

    • 我也试过了,但没有成功。 The answers you seek... Expected "&lt;Dog named 'Fido'&gt;" to equal &lt;Dog named 'Fido'&gt; Please meditate on the following code: /Users/jj/Downloads/koans/about_classes.rb:162:in test_inside_a_method_self_refers_to_the_containing_object'
    【解决方案2】:

    错误是类型对象错误;第一个元素是字符串类型,第二个元素是 Dog7 类型。解决方案是适当地匹配类型。

    检查返回值:

    fidos_self.is_a?(String)
    fidos_self.is_a?(Dog7)
    fidos.is_a?(Dog7)
    fidos_self
    fidos
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 2011-04-14
      相关资源
      最近更新 更多