双管操作符是否有一个速记等价物,它将空字符串视为假的?

时间:2017-09-02 15:05:52

标签: ruby-on-rails ruby

在Ruby中,使用双管道运算符来测试变量是否为假,并在未定义变量时应用某种默认设置是很常见的。这是我在代码库中遇到的一系列配置,我正在做一些工作:

config.uh_product_name = ENV['UH_PRODUCT_NAME'] || 'Unicorn Hunt'

如果ENV["UH_PRODUCT_NAME"]nil,这一切都很好。但在这种情况下,由于.env文件默认设置的方式,ENV["UH_PRODUCT_NAME"]是一个空字符串"",这是真的。因此默认值不会应用。

我可以这样做来处理这种情况:

config.uh_product_name = ENV['UH_PRODUCT_NAME'].present? ? 'Unicorn Hunt' : ENV['UH_PRODUCT_NAME'] 

但这种可读性要低得多,最终导致一行代码可能会延伸到屏幕之外。

那么,有没有人知道||中使用Rails' .blank?或将空字符串视为falsy的速记操作符?也许是这样的事情:

config.uh_product_name = ENV['UH_PRODUCT_NAME'] ?|| 'Unicorn Hunt'

1 个答案:

答案 0 :(得分:7)

使用Object#presence

config.uh_product_name = ENV['UH_PRODUCT_NAME'].presence || 'Unicorn Hunt'