Fix out of date code
This commit is contained in:
parent
cb699c7acd
commit
fbb973b80a
3 changed files with 22 additions and 23 deletions
|
|
@ -9,7 +9,7 @@ Object oriented programming is supported through inheritance and methods, which
|
||||||
Inheritance is created with the `of` keyword in the type declaration of an object. A method is overridden by creating a new method with parameter types of the subtype.
|
Inheritance is created with the `of` keyword in the type declaration of an object. A method is overridden by creating a new method with parameter types of the subtype.
|
||||||
|
|
||||||
``` nimrod
|
``` nimrod
|
||||||
type Animal = ref object of TObject
|
type Animal = ref object of RootObj
|
||||||
name: string
|
name: string
|
||||||
age: int
|
age: int
|
||||||
method vocalize(this: Animal): string = "..."
|
method vocalize(this: Animal): string = "..."
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ title: OOP Macro
|
||||||
This is the code that we currently must write to use OOP in Nim:
|
This is the code that we currently must write to use OOP in Nim:
|
||||||
|
|
||||||
```nimrod
|
```nimrod
|
||||||
type Animal = ref object of TObject
|
type Animal = ref object of RootObj
|
||||||
name: string
|
name: string
|
||||||
age: int
|
age: int
|
||||||
method vocalize(this: Animal): string = "..."
|
method vocalize(this: Animal): string = "..."
|
||||||
|
|
@ -24,7 +24,7 @@ method vocalize(this: Cat): string = "meow"
|
||||||
All these typedefs and `this: T` parameters are repetitive, so it'd be good to write a macro to mask them. Something like this would be best:
|
All these typedefs and `this: T` parameters are repetitive, so it'd be good to write a macro to mask them. Something like this would be best:
|
||||||
|
|
||||||
```nimrod
|
```nimrod
|
||||||
class Animal of TObject:
|
class Animal of RootObj:
|
||||||
var name: string
|
var name: string
|
||||||
var age: int
|
var age: int
|
||||||
method vocalize: string = "..."
|
method vocalize: string = "..."
|
||||||
|
|
@ -63,7 +63,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} =
|
||||||
# Infix
|
# Infix
|
||||||
# Ident !"of"
|
# Ident !"of"
|
||||||
# Ident !"Animal"
|
# Ident !"Animal"
|
||||||
# Ident !"TObject"
|
# Ident !"RootObj"
|
||||||
typeName = head[1]
|
typeName = head[1]
|
||||||
baseName = head[2]
|
baseName = head[2]
|
||||||
|
|
||||||
|
|
@ -175,7 +175,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} =
|
||||||
# ObjectTy
|
# ObjectTy
|
||||||
# Empty
|
# Empty
|
||||||
# OfInherit
|
# OfInherit
|
||||||
# Ident !"TObject"
|
# Ident !"RootObj"
|
||||||
# Empty <= We want to replace this
|
# Empty <= We want to replace this
|
||||||
# MethodDef
|
# MethodDef
|
||||||
# ...
|
# ...
|
||||||
|
|
@ -186,7 +186,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} =
|
||||||
# echo repr(result)
|
# echo repr(result)
|
||||||
# Output:
|
# Output:
|
||||||
# type
|
# type
|
||||||
# Animal = ref object of TObject
|
# Animal = ref object of RootObj
|
||||||
# name: string
|
# name: string
|
||||||
# age: int
|
# age: int
|
||||||
#
|
#
|
||||||
|
|
@ -198,7 +198,7 @@ macro class*(head: expr, body: stmt): stmt {.immediate.} =
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
class Animal of TObject:
|
class Animal of RootObj:
|
||||||
var name: string
|
var name: string
|
||||||
var age: int
|
var age: int
|
||||||
method vocalize: string = "..."
|
method vocalize: string = "..."
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,27 @@
|
||||||
|
|
||||||
489fd1e2356eb85f81bac48e45b186a7
|
489fd1e2356eb85f81bac48e45b186a7
|
||||||
da4974745059fff2c0c3d0af688042ab
|
|
||||||
ef380e36bcc0ebf11902cefaa10ec31b
|
|
||||||
98f917ee2165bc9461c3e9316e8e70ee
|
|
||||||
b243592b06e93bb3cf1f7d62a25abaa3
|
|
||||||
1f6e436b0fbdc68e1776422df711c2bb
|
|
||||||
394ca46d1bf22dedef7e6e753bd033c8
|
|
||||||
8afe80a509d316a3feb3caa1c985760a
|
|
||||||
9551565b83418876b5211869acbcf7cc
|
|
||||||
ade4a4b3b6973bbb44f2e74aee1954f7
|
ade4a4b3b6973bbb44f2e74aee1954f7
|
||||||
|
ef380e36bcc0ebf11902cefaa10ec31b
|
||||||
26ded9e69879069fb8970403e87a24c9
|
26ded9e69879069fb8970403e87a24c9
|
||||||
|
b243592b06e93bb3cf1f7d62a25abaa3
|
||||||
3f3dfdee017d0c329d594e9fe038ed9f
|
3f3dfdee017d0c329d594e9fe038ed9f
|
||||||
cf09b588bb8b3c6979d24dcaff932c68
|
cf09b588bb8b3c6979d24dcaff932c68
|
||||||
448a6cb31706860e7957f8dcca732d85
|
4bb57235ab6f4f0dd1eea58a769570c5
|
||||||
|
394ca46d1bf22dedef7e6e753bd033c8
|
||||||
|
8afe80a509d316a3feb3caa1c985760a
|
||||||
|
0bdba4c56b6172c86726f424b4186baf
|
||||||
|
9551565b83418876b5211869acbcf7cc
|
||||||
ac4fe7f722b390100501e638ce8a9750
|
ac4fe7f722b390100501e638ce8a9750
|
||||||
eb67590e2472e05b207856959e5461c8
|
f770b25468d042a02822e90df0848f35
|
||||||
10ae94a28a0d8f23aff5afaa0367cf27
|
10ae94a28a0d8f23aff5afaa0367cf27
|
||||||
1865b827bef365e6422beb6bc076a25d
|
1865b827bef365e6422beb6bc076a25d
|
||||||
398863bccd3691b42500dfa143a3230b
|
398863bccd3691b42500dfa143a3230b
|
||||||
cdf52a33222c8402025606b0bb4da4d9
|
cdf52a33222c8402025606b0bb4da4d9
|
||||||
b8875a112bc13ea83556bcf385c1160b
|
b8875a112bc13ea83556bcf385c1160b
|
||||||
|
bee0509ab4bcf36510a85081d563057b
|
||||||
30111c31170d8cd9979ae7d88fa276e7
|
30111c31170d8cd9979ae7d88fa276e7
|
||||||
0e641a70cbd7b3e955bb29bde934f36e
|
0e641a70cbd7b3e955bb29bde934f36e
|
||||||
|
ad9e1e896361b0313c3ba66f793f4e6b
|
||||||
d599ef057eaaac83139eb8f949cef356
|
d599ef057eaaac83139eb8f949cef356
|
||||||
e0e0e0b5724e296371d1704996096343
|
e0e0e0b5724e296371d1704996096343
|
||||||
2d60def87d4fa95e26b9f8eade4b0baa
|
2d60def87d4fa95e26b9f8eade4b0baa
|
||||||
|
|
@ -31,9 +31,8 @@ d01dfb20f1d8c1741eef320e82bfcdc2
|
||||||
fbb7977d27de5251fa736a627aaa8311
|
fbb7977d27de5251fa736a627aaa8311
|
||||||
847d1c4525d9056206a1e4f4855a9e10
|
847d1c4525d9056206a1e4f4855a9e10
|
||||||
e4b29a303e0a22cab1f2bfb769ce66c5
|
e4b29a303e0a22cab1f2bfb769ce66c5
|
||||||
e4fbe215e23d9a5c39312839c5fb1b41
|
260d9667bbbc34ce79da5d60efecef02
|
||||||
bee0509ab4bcf36510a85081d563057b
|
24614b0b8792a9afc184e4d63e345981
|
||||||
ad9e1e896361b0313c3ba66f793f4e6b
|
217de4ce8743609c7592a3d75264b17d
|
||||||
f770b25468d042a02822e90df0848f35
|
36c0a24d4e54348f950ff421a33dcd38
|
||||||
4bb57235ab6f4f0dd1eea58a769570c5
|
0b0bdbed7863d3ec82d2d8cb628562ed
|
||||||
0bdba4c56b6172c86726f424b4186baf
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue