ruby-pass接收器作为方法中的参数
我试图弄清楚如何在不使用参数的情况下在接收器上传递我的“get_hostname”方法 例如:ruby-pass接收器作为方法中的参数,ruby,Ruby,我试图弄清楚如何在不使用参数的情况下在接收器上传递我的“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_hostna
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
但是,如果不将“a”作为参数传递,并使get_hostname成为一个类方法,我无法找到一种方法来实现这一点,如:
def self.get_hostname(hostname)
b = Hostname.split(/[0-9]/)
然后我可以做:
b = Hostname.get_hostname(a)
但是,我想再次传递接收者,而不需要像第一个示例中那样的参数。这是可能的吗?您可以使用initialize方法中定义的
@hostname
实例变量,然后在get\u 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-"]
虽然我不确定你想用
.split(/[0-9]/)
做什么。你的代码看起来像Python。你的代码在语法上不是有效的Ruby。如果代码甚至不能被解析,那么考虑代码的语义是没有意义的。