mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 01:14:41 +00:00
29 lines
576 B
Nim
29 lines
576 B
Nim
|
|
type
|
|
TFoo = object
|
|
data: array[0..100, int]
|
|
TSecond = distinct TFoo
|
|
|
|
proc `[]` (self: var TFoo, x: int): var int =
|
|
return self.data[x]
|
|
|
|
proc `[]=` (self: var TFoo, x, y: int) =
|
|
# only `[]` returning a 'var T' seems to not work for now :-/
|
|
self.data[x] = y
|
|
|
|
proc second(self: var TFoo): var TSecond =
|
|
return TSecond(self)
|
|
|
|
proc `[]`(self: var TSecond, x: int): var int =
|
|
return TFoo(self).data[2*x]
|
|
|
|
var f: TFoo
|
|
|
|
for i in 0..f.data.high: f[i] = 2 * i
|
|
|
|
echo f.second[1]
|
|
|
|
#echo `second[]`(f,1)
|
|
# this is the only way I could use it, but not what I expected
|
|
|