在Ruby中声明只读对象属性

时间:2014-05-05 14:23:55

标签: ruby class properties private public

以下是具有初始化程序的类:

class MyUser
  attr_reader :id

  def initialize(parameters)
    @id = parameters['id']
    @login = parameters['login']
    @balance = parameters['balance']
    @info = parameters['info']
  end
end

用法:

usr = MyUser.new(the_hash)

puts usr.inspect

检查的输出:

#<MyUser:0x3bcd318 @id="1", @login="TS1", @balance="0", @info="blah blah blah">

我希望MyUser在检查时看起来像普通类,使用.id,.login,.balance和.info属性而不是@ id,@ login,@ balance和@info。怎么做?

1 个答案:

答案 0 :(得分:1)

不确定您在寻找什么,inspect正在做inspect所做的事情。它不会为您调用方法,并且Ruby语言实际上没有“属性”,您只是使用attr_reader为实例变量生成访问器方法。

如果你愿意,你当然可以覆盖inspect方法,你的目标是什么?