2013-02-11 34 views
-1

我试图访问内部红宝石:一个方法的访问返回值的内部初始化

def initialize 
    @lang = Hash.new 
    return entries 
    end 

def entries 
    return lang # lang is a hash 
    end 

返回值,但它返回一个空的哈希值。

在代码的最后,我有

@query = Book.new 
@query.add('sea') 
@query.include?("sea") 

如何获取存储的值。所以我可以拨打include?本身@query。因为现在它给了我一个未定义的方法错误。

但是,当我做 -

@query = Book.new 
@query.add('sea') 
@query.entries.include?("sea") 

返回TRUE。

谢谢。

+0

您是否尝试重写include?方法,例如 def include?(value) @ entries.include?(value) end – MC2DX 2013-02-11 09:08:24

+0

yes我可以做到这一点。但不知道是否有其他方法可以做到这一点。? – 2013-02-11 09:09:30

+0

不改变你班级的逻辑,我认为没有。 – MC2DX 2013-02-11 09:11:54

回答

2

事情是,Book.new不会返回条目。它总是返回一个书实例。您可以覆盖新的方法,但不能访问书籍实例。您最好的选择是将include方法委托给条目。

+0

是的,猜猜会不会那样:)。 – 2013-02-11 11:56:46