У меня есть класс, который использует миксины Enumerable
и Forwardable
. Дело в том, что несмотря на то, что #each
был реализован (или делегирован), #member?
(который также поставляется с Enumerable
) не работает должным образом.
require "forwardable"
class RestrictedHash
include Enumerable
extend Forwardable
def_delegators :@hash, :[], :[]=, :each
def initialize
@hash = {}
end
end
r_h = RestrictedHash.new
r_h[:a] = []
r_h.member?(:a) #=> false
r_h.member?(:a, []) #=> Wrong number of arguments (2 for 1)
r_h.member?([:a, []]) #=> true
h = {}
h[:a] = []
h.member?(:a) #=> true
h.member?([:a, []]) #=> false
Любые идеи о том, почему я получаю эту разницу в поведении?