diff options
author | def <dennis@felsin9.de> | 2015-03-25 23:38:58 +0100 |
---|---|---|
committer | def <dennis@felsin9.de> | 2015-03-25 23:39:17 +0100 |
commit | 748a7b866f509db8d89a37b30abc5965964ddb07 (patch) | |
tree | fc7332308cd64e5bc89cc99ecfe2fa59f8311f23 /doc/tut2.txt | |
parent | e680e43fc2885c3af611c99c47ba5f2ac098b33e (diff) | |
download | Nim-748a7b866f509db8d89a37b30abc5965964ddb07.tar.gz |
Use ref objects with inheritance in Tut2 (fixes #1817)
Diffstat (limited to 'doc/tut2.txt')
-rw-r--r-- | doc/tut2.txt | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/doc/tut2.txt b/doc/tut2.txt index 4d30b1445..f5089566c 100644 --- a/doc/tut2.txt +++ b/doc/tut2.txt @@ -56,12 +56,12 @@ Objects have access to their type at runtime. There is an .. code-block:: nim type - Person = object of RootObj + Person = ref object of RootObj name*: string # the * means that `name` is accessible from other modules age: int # no * means that the field is hidden from other modules - Student = object of Person # Student inherits from Person - id: int # with an id field + Student = ref object of Person # Student inherits from Person + id: int # with an id field var student: Student @@ -69,6 +69,7 @@ Objects have access to their type at runtime. There is an assert(student of Student) # is true # object construction: student = Student(name: "Anton", age: 5, id: 2) + echo student[] Object fields that should be visible from outside the defining module have to be marked by ``*``. In contrast to tuples, different object types are @@ -228,7 +229,7 @@ is needed: .. code-block:: nim type - Socket* = object of RootObj + Socket* = ref object of RootObj FHost: int # cannot be accessed from the outside of the module # the `F` prefix is a convention to avoid clashes since # the accessors are named `host` @@ -241,8 +242,8 @@ is needed: ## getter of hostAddr s.FHost - var - s: Socket + var s: Socket + new s s.host = 34 # same as `host=`(s, 34) (The example also shows ``inline`` procedures.) @@ -313,8 +314,8 @@ dispatching: .. code-block:: nim type - Thing = object of RootObj - Unit = object of Thing + Thing = ref object of RootObj + Unit = ref object of Thing x: int method collide(a, b: Thing) {.inline.} = @@ -326,8 +327,9 @@ dispatching: method collide(a: Unit, b: Thing) {.inline.} = echo "2" - var - a, b: Unit + var a, b: Unit + new a + new b collide(a, b) # output: 2 |