请参阅以下代码:
x = 3
arr = ("a".."z").to_a
arr2 = [1, 2, arr[ i ], 4]
arr3 = arr2.map * x
期望的输出:
arr3 # => 12a412b412c4
实现此输出的最佳做法是什么?
答案 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"