首页 > 解决方案 > 生成 n*m 数组

问题描述

我正在学习 Kotlin,想知道是否有一种功能性方式,例如“在一行中”创建一个 *m 数组并将其映射到一个平面列表。

例如,以下将创建 20*30=600 个 Seat 对象的列表。row/col 变量以 1 开头。最好将变量名称“it”直接替换为名称“row”/“col”。

val screen = Array(20, {
  val row = it + 1
  Array(30, {
    val col = it + 1
    Seat(row, col)
  }
}).flatten()

标签: kotlinfunctional-programming

解决方案


val screen = (1..20).flatMap { row -> (1..30).map { col -> Pair(row, col) } }
// screen = [ Pair(1, 1), Pair(1, 2), ... ]

推荐阅读