better alternative to 'override'
This commit is contained in:
parent
82f8948a10
commit
73add468b7
3 changed files with 18 additions and 19 deletions
|
|
@ -40,7 +40,7 @@ type
|
|||
x: A
|
||||
y: B
|
||||
z: C
|
||||
|
||||
|
||||
TObjKind = enum A, B, C, D
|
||||
|
||||
TCaseObj = object
|
||||
|
|
@ -57,14 +57,14 @@ type
|
|||
q: TMyGeneric3[TMyObj, int, int]
|
||||
r: string
|
||||
|
||||
proc destroy(o: var TMyObj) {.override.} =
|
||||
proc `=destroy`(o: var TMyObj) =
|
||||
if o.p != nil: dealloc o.p
|
||||
echo "myobj destroyed"
|
||||
|
||||
proc destroy(o: var TMyGeneric1) {.override.} =
|
||||
proc `=destroy`(o: var TMyGeneric1) =
|
||||
echo "mygeneric1 destroyed"
|
||||
|
||||
proc destroy[A, B](o: var TMyGeneric2[A, B]) {.override.} =
|
||||
proc `=destroy`[A, B](o: var TMyGeneric2[A, B]) =
|
||||
echo "mygeneric2 destroyed"
|
||||
|
||||
proc open: TMyObj =
|
||||
|
|
@ -83,12 +83,12 @@ proc mygeneric1() =
|
|||
|
||||
proc mygeneric2[T](val: T) =
|
||||
var a = open()
|
||||
|
||||
|
||||
var b = TMyGeneric2[int, T](x: 10, y: val)
|
||||
echo "mygeneric2 constructed"
|
||||
|
||||
var c = TMyGeneric3[int, int, string](x: 10, y: 20, z: "test")
|
||||
|
||||
|
||||
proc mygeneric3 =
|
||||
var x = TMyGeneric3[int, string, TMyGeneric1[int]](
|
||||
x: 10, y: "test", z: TMyGeneric1[int](x: 10))
|
||||
|
|
@ -111,11 +111,11 @@ proc caseobj =
|
|||
block:
|
||||
echo "----"
|
||||
var o1 = TCaseObj(kind: A, x: TMyGeneric1[int](x: 10))
|
||||
|
||||
|
||||
block:
|
||||
echo "----"
|
||||
var o2 = TCaseObj(kind: B, y: open())
|
||||
|
||||
|
||||
block:
|
||||
echo "----"
|
||||
var o3 = TCaseObj(kind: D, innerKind: B, r: "test",
|
||||
|
|
|
|||
|
|
@ -5,14 +5,14 @@ discard """
|
|||
|
||||
{.experimental.}
|
||||
|
||||
type
|
||||
type
|
||||
TMyObj = object
|
||||
x, y: int
|
||||
p: pointer
|
||||
|
||||
proc destroy(o: var TMyObj) {.override.} =
|
||||
|
||||
proc `=destroy`(o: var TMyObj) =
|
||||
if o.p != nil: dealloc o.p
|
||||
|
||||
|
||||
proc open: TMyObj =
|
||||
result = TMyObj(x: 1, y: 2, p: alloc(3))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue