考虑到这个简单的代码:
class Yeah
attr_reader :foo
attr_reader :fool
attr_reader :feel
def initialize(foo: "test", fool: {}, feel: [])
@foo = foo
@fool = fool
end
end
test = Yeah::new
pp test
test.fool[:one] = 10
pp test
输出 :
#<Yeah:0x000008019a84a0 @foo="test", @fool={}>
#<Yeah:0x000008019a84a0 @foo="test", @fool={:one=>10}>
我的问题是,有一种“简单”、“干净”的方式,可以读取真正的只读数组、哈希属性的访问器,或者我需要继承数组或哈希,并且有很多难以编写的锁定,(undef,别名)或使用代理、委托或其他类似的模式?