我认识红宝石的settingslogic-gem。这允许一种非常优雅的方法来定义默认设置或回退设置,如设置逻辑示例中所述。
我正在阅读PyYaml,但还没有找到这么好的方法来做到这一点。
你怎样才能用一种优雅而又悠扬的方式来解决这个问题呢?
发布于 2013-08-19 23:00:22
我不知道为什么您期望YAML解析库提供多层设置回退。Ruby的YAML解析库当然没有,这就是为什么会有单独的包装器宝石,就像您一开始提到的那样。
但是,如果查看链接的内容,库中根本就没有任何逻辑;如果缺少,应用程序逻辑代码必须使用||=来设置值。您可以在Python中做同样的事情;它只是拼写不同。
在Ruby中,如果要对缺少的键设置异常,则使用点访问;如果要使用nil,则使用括号加上||;如果要设置和返回不同的默认值,则使用略带累赘但惯用的括号加上||=。
在Python中,如果要对缺少的键设置异常,则使用方括号;如果要使用get,则使用None,如果需要参数,则使用带参数的get,如果希望设置和返回不同的默认值,则使用setdefault。所以,这个Ruby代码:
>> settings.messaging['queue_name'] ||= 'user_mail'
=> "user_mail"…在Python中,以下代码如下所示:
>>> settings['messaging'].setdefault('queue_name', 'user_mail')
user_mailhttps://stackoverflow.com/questions/18323696
复制相似问题