对数组的每个元素执行不同的计算

斯达威斯

我有一个数组。我需要对每个元素执行不同的计算。我以为我可以做以下事情:

def calc(a, b, c)
    arr = [a, b, c]
    arr.map { |i| (i[0] * 600), (i[1] * 800), (i[2] * 1000) }
end

calc(5, 8, 15)

但这是行不通的。如何对单个数组的每个元素执行不同的计算?

基思·贝内特(Keith Bennett)

这里有一些其他的实现方式可能会有所帮助。通过将乘数放入数组中,我们可以使用zip适当的乘数值连接输入数组中的元素。另外,通过从执行乘法的逻辑(inmultiply_arraystransform_arrays)中删除乘法器值,可以更轻松地进一步抽象逻辑

#!/usr/bin/env ruby

VALUES = [1, 1, 1]
MULTIPLIERS = [600, 800, 1000]

def transform(*values)
  values.zip(MULTIPLIERS).map { |x, y| x * y }
end

def multiply_arrays(array1, array2)
  array1.zip(array2).map { |n1, n2| n1 * n2 }
end

def transform_arrays(array1, array2, method_name)
  array1.zip(array2).map { |n1, n2| n1.public_send(method_name, n2) }
end


p transform(*VALUES)                           # [600, 800, 1000]
p multiply_arrays(VALUES, MULTIPLIERS)         # [600, 800, 1000]
p transform_arrays(VALUES, MULTIPLIERS, :*)    # [600, 800, 1000]

如果计算需要大不相同(不同的运算符,值,更复杂的逻辑),则比我考虑使用lambda数组更重要:

def transform_with_lambdas(values, transforms)
  values.zip(transforms).map do |value, transform|
    transform.(value)
  end
end

TRANSFORMS = [
  ->(x) { x *  600   },
  ->(x) { x +  100   },
  ->(x) { x /    3.0 },
]

p transform_with_lambdas(VALUES, TRANSFORMS)  # [600, 101, 0.3333333333333333]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何对数组中数组的每个唯一元素求和

来自分类Dev

在Swift中遍历UInt8整数数组;对数组的子集执行计算

来自分类Dev

对2D数组中的每个元素执行操作

来自分类Dev

计算数组中的不同元素

来自分类Dev

如何使用JavaScript延迟对数组中每个元素执行的函数?

来自分类Dev

对数组的每个元素执行不同的计算

来自分类Dev

C#计算字符串数组中的每个元素

来自分类Dev

MongoDB计算每个数组元素的文档

来自分类Dev

如何在LESS CSS中对数组中的每个项目执行操作

来自分类Dev

对向量的每个元素以及该向量的每个元素执行计算的简单方法

来自分类Dev

对数组中的每个对象执行多项功能,然后将结果重定向到文件

来自分类Dev

计算PHP中每个子数组中的元素

来自分类Dev

猫鼬-对每个数组元素执行查询

来自分类Dev

在Swift中遍历UInt8整数数组;对数组的子集执行计算

来自分类Dev

计算数组中的不同元素

来自分类Dev

如何使用JavaScript延迟对数组中每个元素执行的函数?

来自分类Dev

对数组的每个值求和

来自分类Dev

如何为每个不同的元素使用数组的每个值

来自分类Dev

如何在rethinkdb中对数组中的每个值执行联接

来自分类Dev

Javascript-按索引对数组的每个元素求和

来自分类Dev

如何对数组执行计算并以表格形式显示

来自分类Dev

对数组的每个元素运行一个函数

来自分类Dev

对数组数组中每个数组的所有元素求和

来自分类Dev

计算数组的每个连续元素之间的距离

来自分类Dev

如何根据条件计算numpy数组的每个元素

来自分类Dev

计算字符串数组中的每个元素

来自分类Dev

如何在不遍历数组的情况下对数组中的每个元素调用方法?

来自分类Dev

使用函数(2013b 版)在 matlab 中同时对数组中的每个元素进行计算

来自分类Dev

php - 对数组中的每个组合进行计算

Related 相关文章

  1. 1

    如何对数组中数组的每个唯一元素求和

  2. 2

    在Swift中遍历UInt8整数数组;对数组的子集执行计算

  3. 3

    对2D数组中的每个元素执行操作

  4. 4

    计算数组中的不同元素

  5. 5

    如何使用JavaScript延迟对数组中每个元素执行的函数?

  6. 6

    对数组的每个元素执行不同的计算

  7. 7

    C#计算字符串数组中的每个元素

  8. 8

    MongoDB计算每个数组元素的文档

  9. 9

    如何在LESS CSS中对数组中的每个项目执行操作

  10. 10

    对向量的每个元素以及该向量的每个元素执行计算的简单方法

  11. 11

    对数组中的每个对象执行多项功能,然后将结果重定向到文件

  12. 12

    计算PHP中每个子数组中的元素

  13. 13

    猫鼬-对每个数组元素执行查询

  14. 14

    在Swift中遍历UInt8整数数组;对数组的子集执行计算

  15. 15

    计算数组中的不同元素

  16. 16

    如何使用JavaScript延迟对数组中每个元素执行的函数?

  17. 17

    对数组的每个值求和

  18. 18

    如何为每个不同的元素使用数组的每个值

  19. 19

    如何在rethinkdb中对数组中的每个值执行联接

  20. 20

    Javascript-按索引对数组的每个元素求和

  21. 21

    如何对数组执行计算并以表格形式显示

  22. 22

    对数组的每个元素运行一个函数

  23. 23

    对数组数组中每个数组的所有元素求和

  24. 24

    计算数组的每个连续元素之间的距离

  25. 25

    如何根据条件计算numpy数组的每个元素

  26. 26

    计算字符串数组中的每个元素

  27. 27

    如何在不遍历数组的情况下对数组中的每个元素调用方法?

  28. 28

    使用函数(2013b 版)在 matlab 中同时对数组中的每个元素进行计算

  29. 29

    php - 对数组中的每个组合进行计算

热门标签

归档