ruby - 使用大于的 Ruby 安全运算符

标签 ruby

我正在尝试弄清楚如何在以下场景中使用 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 > yx.>(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/

相关文章:

ruby-on-rails - Rails Routing 在查询字符串中有一个 URL

ruby - 惯用的 Ruby - 执行一个函数直到它返回一个 nil,将它的值收集到一个列表中

ruby - 为什么在 Ruby 中获取返回零

ruby - HTTParty::get 返回什么?

ruby - 学生 :Class 的未定义方法 'each'

ruby-on-rails - Rails validates_format_of with Regex 在换行的情况下失败

ruby-on-rails - Ruby 中的绝对符号是什么意思?

ruby-on-rails - Ruby on Rails : How to deploy an app on remote linux server

ruby-on-rails - 使用动态模型名称创建记录

ruby - 在 Ruby 上以随机延迟执行代码