func `[]=`*[T](self: var Array2d[T], row, column: int, value: T) {.inline.} =
if row >= 0 and row < self.rows and column >= 0 and column < self.columns:
self.values[row * self.columns + column] = value
func `[]`*[T](self: Array2d[T], row, column: int): T {.inline.} =
if row < 0 or column < 0: return self.nodata
if row >= self.rows or column >= self.columns: return self.nodata
result = self.values[row * self.columns + column]
And I can decrement by overloading the -= operator. However, I can't seem to figure out how I can combine these two. That is, I'd like to write:
myArray[row, col] -= myValue
Does anyone have suggestions? Thanks.
You need one more overload:
func `[]`*[T](self: var Array2d[T], row, column: int): var T {.inline.} =
if row < 0 or column < 0: return self.nodata
if row >= self.rows or column >= self.columns: return self.nodata
result = self.values[row * self.columns + column]
(There is an RFC in the pipeline that redesigns this slightly...)