【发布时间】:2014-06-21 21:29:54
【问题描述】:
这是带有初始化器的类:
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。如何做到这一点?
【问题讨论】:
-
“普通班”是什么意思?它是带有实例变量的普通类。
-
@MarekLipka 我认为 OP 的意思是常规课程......
-
@ArupRakshit 那么现在你所说的“普通班”是什么意思? :)
-
@MarekLipka 常规类是一个类,例如,您可以从中创建它的实例(例如)。但是你不能在
singleton_class..这样的课堂上做同样的事情。 -
我认为
.inspect方法的任务是显示一个对象的所有公共成员。可能我错了。我真正需要的是对属性的封装,以便它们只能通过my_obj.id之类的访问器读取
标签: ruby class properties private public