微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Ruby中的or-operator简化“任意”检查

如何简化以下检查?…

if node[:base][:database][:adapter].empty? || node[:base][:database][:host].empty? || 
  node[:base][:database][:database].empty? || node[:base][:database][:port].empty?

喜欢的东西

required_keys = { :adapter,:host,:database...etc...} 
required keys - node[:base][:database] == []

这种语法有点偏,但基本上从所需的密钥集中减去了你的密钥.如果您的集合中包含所有必需的键,则结果应为空.

我不确定正确的语法? .任何帮助,将不胜感激

解决方法

required_keys = [:adapter,:database ]
if required_keys.any?{|x| node[:base][:database][x].empty?}
  #code here
end

或者你也可以这样做:

node[:base][:database].values_at(*required_keys).any?(&:empty?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐