Another update from ingydotnet^djgoku
This commit is contained in:
parent
91df62d461
commit
948b86eafa
7604 changed files with 108452 additions and 22726 deletions
23
Task/Inheritance-Single/TXR/inheritance-single-3.txr
Normal file
23
Task/Inheritance-Single/TXR/inheritance-single-3.txr
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
(defstruct animal nil
|
||||
name
|
||||
(:method get-name (me)
|
||||
(if me.name me.name (error `get-name: animal @me has no name`)))
|
||||
(:method speak (me stream)
|
||||
(error "abstract animal cannot speak")))
|
||||
|
||||
(defstruct dog animal
|
||||
(:method speak (me : (stream *stdout*))
|
||||
(put-line `@{me.(get-name)}: bark!` stream)))
|
||||
|
||||
(defstruct cat animal
|
||||
(:method speak (me : (stream *stdout*))
|
||||
(put-line `@{me.(get-name)}: meow!` stream)))
|
||||
|
||||
(defstruct lab dog)
|
||||
|
||||
(defstruct collie dog)
|
||||
|
||||
(let ((pet1 (new collie name "Lassie"))
|
||||
(pet2 (new cat name "Max")))
|
||||
pet1.(speak)
|
||||
pet2.(speak))
|
||||
Loading…
Add table
Add a link
Reference in a new issue