2017-08-06 97 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] /)'来做什么。 –