我可以使用元组来索引 Nim 中的多维数组吗?

Can I use a tuple to index into a multidimensional array in Nim?

假设我有一个二维数组:

var a = [[1,2],[3,4]]

还有一个元组:

type
  Point: tuple[x, y: int]

let p: Point = (1,1)

我可以通过 a[p.x][p.y] 索引到 a,但是有更短的方法吗?

例如在Python的numpy中我可以直接a[p]

我不这么认为。但像往常一样,您可以添加您认为有用的功能,即使该语言本身不支持它们:

proc `[]`[N, T](xs: openarray[array[N, T]], p: (int, int)): T = xs[p[0]][p[1]]
proc `[]`[T](xs: openarray[seq[T]], p: (int, int)): T = xs[p[0]][p[1]]

type Point = tuple[x, y: int]
let p: Point = (1,1)

var a = [[1,2],[3,4]]
var b = @[@[1,2],@[3,4]]

echo a[p]
echo b[p]