在Swift中填充数组的功能方法

时间:2018-04-17 10:56:16

标签: arrays swift

我需要填充一个描述Matrix [[Double]]的数组。矩阵的每个元素都具有以下形式:

a(i,j) = exp(a*(i+j) + b*min(i,j))

有没有一种优雅的方式,而不是使用2个嵌入式循环?

1 个答案:

答案 0 :(得分:2)

您可以使用map两次来创建matrix。这是一种功能性方法,实际上只是两个循环:

let maxi = 5  // largest acceptable index
let maxj = 3  // largest acceptable index

let a = 2.3
let b = 3.4

let matrix = (0...maxi).map { i in (0...maxj).map { j in exp(a * Double(i + j) + b * Double(min(i, j))) } }

如果我们按照这样格式化它可能会更容易阅读:

let matrix = (0...maxi).map { i in
                 (0...maxj).map { j in
                     exp(a * Double(i + j) + b * Double(min(i, j)))
                 }
             }

这比使用循环的一个优点是您可以创建只读(let)的矩阵。当然,如果你想要它是可变的,你总是可以使它var