Nim-lang:用两个变量来理解列表

Nim-lang: list comprehension with two variables

对如何使用两个变量执行列表理解感到困惑。

这是我目前正在尝试做的事情:

let profile_row = lc[profile[r][c] | ( r <- 0..<4, c <- 0..<k ), int]

这是错误:

greedy_motif_ba2d.nim(22, 40) Error: type mismatch: got <seq[int], float>

这是如何正确完成的?

事实证明,我的做法确实有效,只需要更改类型即可。

let profile_row = lc[profile[r][c] | ( r <- 0..<4, c <- 0..<k ), float]

由于 Nim 1.2 lc 已被删除,因此对于今天搜索的任何人来说,以下是执行此操作的方法:

let profile_row = collect(newSeq):
  for r in 0..<4:
    for c in 0..<4:
      profile[r][c]

注意 collect 无需指定 profile[r][c] 的类型,但需要您为容器提供初始化过程 profile_row