ruby - 将n维数组的每个元素乘以Ruby中的数字

标签 ruby arrays multidimensional-array

在 Ruby 中,是否有一种简单的方法可以将 n 维数组中的每个元素乘以一个数字?

这样: [1,2,3,4,5].multiplied_by 2 == [2,4,6,8,10]

[[1,2,3],[1,2,3]].multiplied_by 2 == [[2,4,6],[2,4,6]]

(很明显,我编写了 multiplied_by 函数以区别于 *,它似乎连接了数组的多个副本,不幸的是这不是我需要的)。

谢谢!

最佳答案

它的长格式等价物是:

[ 1, 2, 3, 4, 5 ].collect { |n| n * 2 }

其实并没有那么复杂。你总是可以使你的 multiply_by 方法:

class Array
  def multiply_by(x)
    collect { |n| n * x }
  end
end

如果你想让它递归地相乘,你需要把它作为一种特殊情况来处理:

class Array
  def multiply_by(x)
    collect do |v|
      case(v)
      when Array
        # If this item in the Array is an Array,
        # then apply the same method to it.
        v.multiply_by(x)
      else
        v * x
      end
    end
  end
end

关于ruby - 将n维数组的每个元素乘以Ruby中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7769136/

相关文章:

javascript - 为什么这在 JS 而不是 PHP 中有效?

c++ - boost::multi_array 示例的 pretty-print 失败

ruby-on-rails - 使用 nokogiri 解析 XML 并创建具有多个属性的记录

ruby - 在 ruby​​ 1.9.3. 中,: object-instance. 克隆创建的对象怎么找不到原始对象可以找到的方法?

ruby - 为什么 Ruby 将 FixNum n 散列为 2n+1?

sql - 用于 250K+ 字符串的通配符搜索的 Fast(er) 方法

arrays - 如何将数组中的每个元素与 Powershell 中多个其他数组中的每个元素组合

c# - 数组指针线程安全

python - 迭代多维数组并跟踪/执行迭代索引操作的最佳方法是什么

php - 多维数组使用 php 和 mysql 跳过除最后一个值之外的所有值