Ruby里getter和setter的写法

ruby里的实例变量用一个@符号做前缀。但是不能直接访问,例如:
class Person
  def initialize(name
,  age)
    
@name   =  name
    
@age =  age
  end
end
p1=Person.new("Tom",23)
puts p1.name                 #这一行会报undefined method `name'的错误
下面的代码是ruby里一个标准的属性访问器,它类似于getter和setter。有一点特别,就是属性名+等于号 来定义一个setter。
class Person
  def initialize(name
,  age)
    
@name   =  name
    
@age =  age
  end
  
  def name
    
@name
  end
  def age
    
@age
  end
  def age
= (value)
    
@age =  value
  end
end
p1=Person.new("Tom",23)
puts p1.name                           #Tom
p1.age = 25
puts p1.age                              #25
ruby还提供一种便捷的写法:
class Person
  def initialize(name
,  age)
    
@name   =  name
    
@age =  age
  end
  attr_reader 
: name ,   : age
  attr_writer 
: age
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值