我如何重构以下内容?我有一些值存储在我的YAML文件中作为嵌套数组,但我想将所有事务拉成两个get和set方法。这有效,但显然是有限和笨重的。感觉不对。
module Persistance
@store = YAML::Store.new('store.yml')
def self.get_transaction(key)
@store.transaction { @store[key] }
end
def self.get_nested_transaction(key, sub)
@store.transaction { @store[key][sub] }
end
end
奖励积分:我还有一个额外的方法来增加我的YAML文件中的值。有没有进一步的方法来重构这段代码?将块传递给单个数据库访问方法是否有意义?
答案 0 :(得分:1)
无论如何,关于代码。基本上这里有几个重要的概念:
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
类似于哈希,因为您可以使用@store
和[]
,但它实际上不是哈希值,而是[]=
。 YAML::Store
和get
使用此功能,我的代码显示为set
是真正的哈希,那将是它的结尾但不是,所以对于这个答案,我添加了一个@store
方法,其使用方法与原始方法相同。 YAML::Store#dig