先来看看一个例子:
class Lady
def initialize(age)
@age = age
end
end
mary = Lady.new(12)
mary.age
这样能取到值吗?
答案是不能。
会返回:undefined local variable or method `age'
但是如果这样改:
class Lady
def initialize(age)
@age = age
end
def age
return @age
end
end
mary = Lady.new(12)
mary.age
就可以取到值了。
返回: 12
当然还可以设置age的值,像这样:
class Lady
def initialize(age)
@age = age
end
def age
return @age
end
def age=(new_age)
@age = new_age
end
mary = Lady.new(12)
mary.age
这样每次都要写一大堆,是不是挺烦人。
别着急,可以用attr_accessor来替代。像这样。
class Lady
attr_accessor :age
def initialize(age)
@age = age
end
end
mary = Lady.new(12)
mary.age
当然你也可以自定义
class Girl
attr_accessor :age
def age=(new_age)
@age = (new_age > 18) ? 18 : new_age # 如果大于18岁,默认18
end
end
mary = Girl.new
mary.age = 30 # 虽然给了30
puts mary.age # 仍然是18岁
网友评论