2024-06-28 20:50:49 发布
网友
我知道ruby的settingslogic-gem。这允许非常优雅地定义应用程序的默认设置或回退设置,如settingslogic example中所述。你知道吗
settingslogic
gem
我正在通读PyYaml,但还没有找到这么好的方法。你知道吗
PyYaml
你如何用优雅的方式解决这个问题?你知道吗
我不知道为什么您希望YAML解析库提供多层设置回退。Ruby的YAML解析库当然没有,这就是为什么会有像您首先提到的那样的单独包装器gem。你知道吗
但是如果您查看链接到的内容,库中实际上根本没有任何逻辑;应用程序逻辑代码必须使用||=来设置缺少的值。在Python中也可以做同样的事情;只是拼写不同而已。你知道吗
||=
在Ruby中,如果您想在缺少键时出现异常,可以使用dot access;如果您想使用nil,可以使用方括号;如果您想使用不同的默认值,可以使用方括号加上||;如果您想设置并返回不同的默认值,可以使用有点老套但惯用的方括号加上||=。你知道吗
nil
||
在Python中,如果希望缺少键出现异常,则使用方括号,get如果希望None,则使用带有参数的get,如果希望设置并返回不同的默认值,则使用setdefault。所以,这个Ruby代码:
get
None
setdefault
>> settings.messaging['queue_name'] ||= 'user_mail' => "user_mail"
…在Python中是这样的:
>>> settings['messaging'].setdefault('queue_name', 'user_mail') user_mail
我不知道为什么您希望YAML解析库提供多层设置回退。Ruby的YAML解析库当然没有,这就是为什么会有像您首先提到的那样的单独包装器gem。你知道吗
但是如果您查看链接到的内容,库中实际上根本没有任何逻辑;应用程序逻辑代码必须使用
||=
来设置缺少的值。在Python中也可以做同样的事情;只是拼写不同而已。你知道吗在Ruby中,如果您想在缺少键时出现异常,可以使用dot access;如果您想使用
nil
,可以使用方括号;如果您想使用不同的默认值,可以使用方括号加上||
;如果您想设置并返回不同的默认值,可以使用有点老套但惯用的方括号加上||=
。你知道吗在Python中,如果希望缺少键出现异常,则使用方括号,
get
如果希望None
,则使用带有参数的get
,如果希望设置并返回不同的默认值,则使用setdefault
。所以,这个Ruby代码:…在Python中是这样的:
相关问题 更多 >
编程相关推荐