Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
34
Task/Delegates/Forth/delegates.fth
Normal file
34
Task/Delegates/Forth/delegates.fth
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
include FMS-SI.f
|
||||
|
||||
:class delegate
|
||||
:m thing ." delegate implementation" ;m
|
||||
;class
|
||||
|
||||
delegate slave
|
||||
|
||||
:class delegator
|
||||
ivar del \ object container
|
||||
:m !: ( n -- ) del ! ;m
|
||||
:m init: 0 del ! ;m
|
||||
:m default ." default implementation" ;m
|
||||
:m operation
|
||||
del @ 0= if self default exit then
|
||||
del @ has-meth thing
|
||||
if del @ thing
|
||||
else self default
|
||||
then ;m
|
||||
;class
|
||||
|
||||
delegator master
|
||||
|
||||
\ First, without a delegate
|
||||
master operation \ => default implementation
|
||||
|
||||
\ then with a delegate that does not implement "thing"
|
||||
object o
|
||||
o master !:
|
||||
master operation \ => default implementation
|
||||
|
||||
\ and last with a delegate that implements "thing"
|
||||
slave master !:
|
||||
master operation \ => delegate implementation
|
||||
Loading…
Add table
Add a link
Reference in a new issue