2010-08-06 35 views
1

分配從子類的值到另一個類的初始化參數如何分配在Ruby中值到另一個類的初始化參數如何在Ruby中

class Ubac 
    def initialize(p_str) 
    @p_str=p_str 
    (.....) 
    end 
    def method1 
    (.....) 
    end 

end 

class ReqQuote < Ubac 
    def initialize(p_code) 
    @code=p_code 
    # here how do i initialize the @p_str to the value which is returned from the get_data method below.? 
    end 
    def get_data(symbol) 
    (....) # fetch data 
    data 
    end 
    def methodx 
    (.....) 
    end 


end 

怎麼在這裏我初始化@p_str與返回值從get_data方法好像p_str初始化Ubac類的initialize

回答

2

在這種特殊情況下,您可以將@p_str=放在Ubac#initialize之內。但是,您可以使用super,例如ReqQuote來調用Ubacinitialize

class ReqQuote < Ubac 
    def initialize(p_code) 
    super(get_data(some_symbol)) 
    @code=p_code 
    end 
    ... 

這通常是一個很好的做法,因爲這意味着添加到Ubac任何其他初始化代碼也將得到執行,當你創建一個ReqQuote

+0

感謝mikej :) – imaginea 2010-08-06 08:33:02

+0

注意在構造函數完成之前調用get_data,這可能會導致意外的錯誤。特別是如果get_data調用其他實例方法,或者get_data在子類中被覆蓋。 – Douglas 2010-08-06 12:40:37

0

你寫@p_str = get_data(some_symbol)

+0

in ReqQuote class? – imaginea 2010-08-06 06:59:27