2017-08-06 96 views
-1

我想弄清楚如何通過我的「get_hostname」方法在接收器上,而不使用參數。紅寶石通過接收器作爲參數的方法

對於前:

class Hostname 
    def initialize(hostname) 
     @hostname = hostname 

    def get_hostname(hostname) 
     b = hostname.split(/[0-9]/) 

a = new.Hostname("prod-srv-1") 

現在,我希望能夠調用是這樣的:

b = a.get_hostname 

但是,我不能想出一個辦法做到這一點不傳球「一」作爲參數,並使get_hostname一個類的方法,如:

def self.get_hostname(hostname) 
    b = Hostname.split(/[0-9]/) 

然後我可以這樣做:

b = Hostname.get_hostname(a) 

但是,我想通過接收器沒有像我的第一個例子中的參數。這可能嗎?

+0

你的代碼看起來像Python。 – sawa

+0

你的代碼在語法上不是有效的Ruby。如果它甚至不能被解析,那麼考慮代碼的語義是沒有意義的。 –

回答

1

您可以使用initialize方法並在該所定義的@hostname實例變量在get_hostname方法的工作:

class Hostname 
    def initialize(hostname) 
    @hostname = hostname 
    end 
    def get_hostname 
    b = @hostname.split(/[0-9]/) 
    end 
end 

hostname = Hostname.new('prod-srv-1') 
p hostname.get_hostname 
# => ["prod-srv-"] 
+0

儘管我不確定你想用'.split(/ [0-9] /)'來做什麼。 –