我正在尝试弄清楚如何在以下场景中使用 Ruby 的安全运算符:
if attribute_value && attribute_value.length > 255
如果 attribute_value 为 nil,则以下内容不起作用:
if attribute_value&.length > 255
# NoMethodError: undefined method `>' for nil:NilClass
我明白为什么,但我想知道如何解决这个问题。以下是有效的,但它非常丑陋:
if attribute_value&.(length > 255)
推荐的做法是什么?我想我可以执行以下操作:
if attribute_value&.length.to_i > 255
对于这种情况来说,这还算不错。还有什么吗?
最佳答案
作为对问题的直接回答,您可以直接使用安全导航运算符,因为 x > y
实际上只是调用 >
method在对象 x 上。即,x > y
与 x.>(y)
或 x.send(:>, y)
因此,您可以使用x&.> y
。或者,在您的情况下,attribute_value&.length&.> 255
就我个人而言,我更喜欢 attribute_value && attribute_value.length > 255
,但也许这就是我。
关于ruby - 使用大于的 Ruby 安全运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029719/