use*_*902 3 ruby ruby-on-rails
当some_method的返回结果为nil时,我发现自己做了很多事情来防止nil。
a = a.some_method.present? ? a.some_method : []
Run Code Online (Sandbox Code Playgroud)
还有更红宝石的方法吗?我试过使用
a = []
a ||= a.some_method
Run Code Online (Sandbox Code Playgroud)
但是那当然会给我
a = []
Run Code Online (Sandbox Code Playgroud)
谢谢!
通常的模式是:
result = method(args) || default_value
Run Code Online (Sandbox Code Playgroud)
该||操作是短路。如果左侧为假,则无需费力评估右侧。在Ruby中,nil被认为是错误的。因此,如果nil返回(或false),则||计算结果为右侧,并将其作为结果返回。
请注意,左侧和右侧的顺序很重要。