【发布时间】:2021-04-17 20:21:55
【问题描述】:
我正在使用一个模块来封装一组变量以及与这些变量相关的方法。这些变量之一是应该使用模块方法更新的哈希。我通过以下代码实现了这个目标:
module MyModule
@hash_a = {
key1: "value1",
key2: "value2"
}
def self.hash_a_set(key,value)
@hash_a[key]=value
end
def self.hash_a_get(key)
return @hash_a[key]
end
end
MyModule.hash_a_get(:key1) # "value1"
MyModule.hash_a_set(:key1,2)
MyModule.hash_a_get(:key1) # 2
即使这很有效,使用那些 setter 和 getter 方法感觉也不对。有没有办法按如下方式访问它们(或任何其他类似于哈希语法的方式)?
MyModule.hash_a[:key1] # "value1"
MyModule.hash_a[:key1]=2
MyModule.hash_a[:key1] # 2
谢谢
【问题讨论】:
-
也许这应该是一个带有访问器的对象。
-
你可以定义
self.[]和self.[]=(val)然后你可以直接调用MyModule[:key1]或者MyModule[:key1]=2