我通常会
value = input || "default"
所以如果输入 = nil
value = "default"
但是我怎么能这样做而不是nil
它也将一个空字符串计''
为nil
我想要这样,如果我这样做
input = ''
value = input || "default"
=> "default"
有没有一种简单优雅的方法来做到这一点if
?
我通常会
value = input || "default"
所以如果输入 = nil
value = "default"
但是我怎么能这样做而不是nil
它也将一个空字符串计''
为nil
我想要这样,如果我这样做
input = ''
value = input || "default"
=> "default"
有没有一种简单优雅的方法来做到这一点if
?
Rails向所有执行您想要的操作的对象添加了存在方法
input = ''
value = input.presence || "default"
=> "default"
input = 'value'
value = input.presence || "default"
=> "value"
input = nil
value = input.presence || "default"
=> "default"
我通常这样做:
value = input.blank? ? "default" : input
针对输入可能未定义的情况,您可以通过以下方式保护它:
value = input || (input.blank? ? "default" : input)
# I just tried that the parentheses are required, or else its return is incorrect
对于纯红宝石(不依赖于 Rails),您可以empty?
这样使用:
value = input || (input.empty? ? "default" : input)
或者像这样(感谢@substantial 提供这个):
value = (input ||= "").empty? ? "default" : input
也许无关紧要,但我会像这样使用高线:
require "highline/import"
input = ask('Input: ') { |q| q.default = "default" }
它可以在没有 Rails 的情况下工作。真正巧妙的解决方案。