1234567891011121314151617181920212223242526272829303132 |
- discard """
- output: "4"
- """
- 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
|