ruby-on-rails - 如果只有一个存在,是否有用于返回第一个数组元素的 ruby​​ 习惯用法?

标签 ruby-on-rails ruby arrays

如果数组只包含一个值,我想返回数组的第一个元素。

目前,我使用:

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%),它们将迭代大小为 10 的数组。

最佳答案

您似乎想处理 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/

相关文章:

mysql 和 passenger - 错误 “library not loaded”

ruby-on-rails - 如何限制 AWS CloudFront 使其仅处理来 self 域中单个目录的请求?

sql - Mysql 到 Rails SQL 查询

ruby-on-rails - 多步 ActiveRecord 的模型验证

ruby-on-rails - 如何使普通的 ruby​​ 对象可分配为事件记录关联

ruby - 为什么 Method#arity 被称为 arity?

ruby - block 看不到方法( Chef 资源)

arrays - Swift:如何按特定顺序将项目插入数组?

php - 对一个大的多维数组进行排序

c - 逐行填充数组(一维数组)