mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
52 lines
868 B
Nim
52 lines
868 B
Nim
discard """
|
|
output: '''apple
|
|
banana
|
|
Fruit
|
|
2
|
|
4
|
|
3
|
|
none
|
|
skin
|
|
paper
|
|
'''
|
|
"""
|
|
type
|
|
Fruit = object of RootObj
|
|
name: string
|
|
Apple = object of Fruit
|
|
Banana = object of Fruit
|
|
|
|
var
|
|
ir = Fruit(name: "Fruit")
|
|
ia = Apple(name: "apple")
|
|
ib = Banana(name: "banana")
|
|
|
|
let x = [ia.addr, ib.addr, ir.addr]
|
|
for c in x: echo c.name
|
|
|
|
type
|
|
Vehicle[T] = object of RootObj
|
|
tire: T
|
|
Car[T] = object of Vehicle[T]
|
|
Bike[T] = object of Vehicle[T]
|
|
|
|
var v = Vehicle[int](tire: 3)
|
|
var c = Car[int](tire: 4)
|
|
var b = Bike[int](tire: 2)
|
|
|
|
let y = [b.addr, c.addr, v.addr]
|
|
for c in y: echo c.tire
|
|
|
|
type
|
|
Book[T] = ref object of RootObj
|
|
cover: T
|
|
Hard[T] = ref object of Book[T]
|
|
Soft[T] = ref object of Book[T]
|
|
|
|
var bn = Book[string](cover: "none")
|
|
var hs = Hard[string](cover: "skin")
|
|
var bp = Soft[string](cover: "paper")
|
|
|
|
let z = [bn, hs, bp]
|
|
for c in z: echo c.cover
|