Aks*_*hat 18 ruby ruby-on-rails
我经常这样做
value = input || "default"
Run Code Online (Sandbox Code Playgroud)
所以如果输入= nil
value = "default"
Run Code Online (Sandbox Code Playgroud)
但是,我怎么能做到这一点,这样不是nil这也算一个空字符串''作为nil
我希望如果我这样做
input = ''
value = input || "default"
=> "default"
Run Code Online (Sandbox Code Playgroud)
有没有一种简单优雅的方法可以做到这一点if?
dim*_*uch 49
Rails将存在方法添加到完全符合您要求的所有对象
input = ''
value = input.presence || "default"
=> "default"
input = 'value'
value = input.presence || "default"
=> "value"
input = nil
value = input.presence || "default"
=> "default"
Run Code Online (Sandbox Code Playgroud)
我通常是这样做的:
value = input.blank? ? "default" : input
Run Code Online (Sandbox Code Playgroud)
针对可能未定义输入的情况,您可以通过以下方式对其进行保护:
value = input || (input.blank? ? "default" : input)
# I just tried that the parentheses are required, or else its return is incorrect
Run Code Online (Sandbox Code Playgroud)
对于纯 ruby(不依赖于 Rails),你可以这样使用empty?:
value = input || (input.empty? ? "default" : input)
Run Code Online (Sandbox Code Playgroud)
或者像这样(感谢@substantial 提供这个):
value = (input ||= "").empty? ? "default" : input
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10508 次 |
| 最近记录: |