我可以使用元组来索引 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]
假设我有一个二维数组:
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]