我需要检查布尔变量是否已设置其值,我可以通过检查它是否包含空字符串""或nil指示该值尚未设置以及另一个值true或false指示该值已设置来知道。
我尝试使用,blank?但 Railsblank?在调用时false实际上会返回的方法上有这个问题true
false.blank? # Returns true
因此,当变量的值设置为 false 时,它会给我该值的误报,就好像该变量尚未设置一样。
如何在 Ruby on Rails 中检查变量是否未设置("", nil)或已设置(true, false, 0, )?1
[编辑首先给出这个解决方案]:我认为最好的解决方案是明确说明:
def not_set?(x)
[nil, ''].include?(x)
end
Run Code Online (Sandbox Code Playgroud)
这比转换为字符串的性能更高,所有人都可以清楚地理解,并且涵盖未来未知的意外输入。
这是我最初的解决方案,更简短,Ruby-er,但性能较差,健壮性较差:
尝试my_var.to_s.empty?
我相信这涵盖了您感兴趣的所有六种情况:
puts " show unset (nil, '') "
puts ''.to_s.empty?
puts nil.to_s.empty?
puts " show set (true, false, 0, 1) "
puts true.to_s.empty?
puts false.to_s.empty?
puts 0.to_s.empty?
puts 1.to_s.empty?
Run Code Online (Sandbox Code Playgroud)
产量:
show unset (nil, '')
true
true
show set (true, false, 0, 1)
false
false
false
false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2233 次 |
| 最近记录: |