我试图弄清楚如何在以下场景中使用 Ruby 的安全运算符:
if attribute_value && attribute_value.length > 255
Run Code Online (Sandbox Code Playgroud)
如果 attribute_value 为零,则以下内容不起作用:
if attribute_value&.length > 255
# NoMethodError: undefined method `>' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
我明白为什么,但我想知道如何解决这个问题。以下工作,但它是丑陋的地狱:
if attribute_value&.(length > 255)
Run Code Online (Sandbox Code Playgroud)
这样做的推荐方法是什么?我想我可以做到以下几点:
if attribute_value&.length.to_i > 255
Run Code Online (Sandbox Code Playgroud)
对于这种情况,这还不错。还要别的吗?
这类事情取决于您试图容纳哪种类型的缺失值,如果无法定义它,则与在边界内或边界外相同。
您的做法:
attribute_value&.length.to_i > 255
Run Code Online (Sandbox Code Playgroud)
只要nil意思是“不超出界限”,似乎就足够合理了。
我经常用如下的防护条件来处理这个问题:
return unless attribute_value
if attribute_value.length > 255
# ... Handle condition
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
746 次 |
| 最近记录: |