在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'
答案 0 :(得分:7)
config.uh_product_name = ENV['UH_PRODUCT_NAME'].presence || 'Unicorn Hunt'