1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
discard """
matrix: "--mm:refc; --mm:orc"
"""
import std/with
import std/[assertions, formatfloat]
type
Foo = object
col, pos: string
name: string
proc setColor(f: var Foo; r, g, b: int) = f.col = $(r, g, b)
proc setPosition(f: var Foo; x, y: float) = f.pos = $(x, y)
var f: Foo
with(f, setColor(2, 3, 4), setPosition(0.0, 1.0))
doAssert f.col == "(2, 3, 4)"
doAssert f.pos == "(0.0, 1.0)"
f = Foo()
with f:
col = $(2, 3, 4)
pos = $(0.0, 1.0)
_.name = "bar"
doAssert f.col == "(2, 3, 4)"
doAssert f.pos == "(0.0, 1.0)"
doAssert f.name == "bar"
type
Baz* = object
a*, b*: int
Bar* = object
x*: int
baz*: Baz
var bar: Bar
with bar:
x = 1
with baz:
a = 2
doAssert bar.x == 1
doAssert bar.baz.a == 2
|