映射数组,迭代嵌套数组

时间:2016-01-06 04:23:34

标签: arrays ruby dictionary nested

请参阅以下代码:

x = 3
arr = ("a".."z").to_a
arr2 = [1, 2, arr[ i ], 4]
arr3 = arr2.map * x

期望的输出:

arr3 # => 12a412b412c4

实现此输出的最佳做法是什么?

4 个答案:

答案 0 :(得分:3)

model.setClassifier(....); 

答案 1 :(得分:3)

我不确定你在做什么,所以坚持你的原始代码:

val lis1 = List("pt1", "pt2", "")
val lis2 = List("pt1", "")

lis1.filter(item => lis2.contains(item))
// > res0: List[String] = List(pt1, "")

lis1.intersect(lis2)
// > res1: List[String] = List(pt1, "")

在实际定义它之前无法使用x = 3 arr = ("a".."z").to_a arr2_generator = lambda { |i| [1, 2, arr[i], 4] } arr3 = x.times.map(&arr2_generator) puts arr3.join ,并且无法静态定义它,因为它从一个实例变为另一个实例 - 即没有办法写i这样它会在以后改变。相反,我们使用lambda表达式,它将接受arr2并给予i

最后,如果您只是打印数组,每行将获得一个元素;所以我使用[1, 2, arr[i], 4]将所有内容刷成一个字符串。

答案 2 :(得分:1)

enum = ('a'..'z').to_enum
3.times.map { [1,2,enum.next,4] }.join
  #=> "12a412b412c4" 

答案 3 :(得分:1)

您可以将Array::new与块一起使用:

x = 3
arr = ("a".."z").to_a
Array.new(x) { |i| [1, 2, arr[i], 4] }.join
#=> "12a412b412c4"