8

我正在关注Ruby Koans的练习,about_proxy_object_project.rb其中有一段代码:

class Proxy
  def initialize(target_object)
    @object = target_object
  end

  # This method was added by me
  def method_missing(method_name, *args, &block)
    @object.send method_name
  end
end

这被称为:

def test_tv_methods_still_perform_their_function
  tv = Proxy.new(Television.new) # Television is a class with a :channel attr_accessor and a power method

  tv.channel = 10
  tv.power

  assert_equal 10, tv.channel
  assert tv.on?
end

问题是该行tv.channel = 10正在“破坏”解释器并抛出:

[BUG] Stack consistency error (sp: 53, bp: 54)
ruby 2.0.0p0
(...)    
full stack trace follows

我已经用 Ruby 1.9.3 尝试了相同的代码并且它正在工作。我正在使用 Ruby 2.0.0-p195。

那么,这是一个错误/错误吗?还是我做错了什么?

4

1 回答 1

2

是的。这是ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]. 在堆栈跟踪的末尾,它说:

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

您应该将此报告给 Ruby 核心。为了 Ruby 社区,请这样做。

正如马特所指出的,它已在 Ruby 2.0.0p247 中修复。

我看你没有做错什么。

于 2013-07-07T14:42:32.267 回答