如果数组只包含一个值,我想返回数组的第一个元素。
目前,我使用:
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
的数组。
答案 0 :(得分:2)
您似乎想要处理未定义的val数组的情况,所以......
val.size > 1 ? val : val[0] if defined?(val)
但正如已经指出的那样,提供一致的参数(总是数组)会更好,所以下面将提供val数组或者如果未定义则为空数组
defined?(val) ? val : []