如果数组只包含一个值,我想返回数组的第一个元素。
目前,我使用:
vals.one? ? vals.first : vals.presence
因此:
vals = []; vals.one? ? vals.first : vals.presence
# => nil
vals = [2]; vals.one? ? vals.first : vals.presence
# => 2
vals = [2, 'Z']; vals.one? ? vals.first : vals.presence
# => [2, "Z"]
是否有内置的东西可以做到这一点,或者是否有更好的设计考虑?
我的用例是特定的,涉及知道从方法(将实现上述代码)中期望什么的演示者。如果这些演示者将所有返回值作为数组处理,那么在大多数情况下 (~90%),它们将迭代大小为 1
或 0
的数组。
最佳答案
您似乎想处理 val 数组未定义的情况,所以...
val.size > 1 ? val : val[0] if defined?(val)
但正如已经指出的那样,传递一致的参数(总是数组)会更好,因此如果未定义,以下内容将传递 val 数组或空数组
defined?(val) ? val : []
关于ruby-on-rails - 如果只有一个存在,是否有用于返回第一个数组元素的 ruby 习惯用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20109800/