Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
40
Task/Delegates/OoRexx/delegates.rexx
Normal file
40
Task/Delegates/OoRexx/delegates.rexx
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
delegator = .delegator~new -- no delegate
|
||||
say delegator~operation
|
||||
-- an invalid delegate type
|
||||
delegator~delegate = "Some string"
|
||||
say delegator~operation
|
||||
-- a good delegate
|
||||
delegator~delegate = .thing~new
|
||||
say delegator~operation
|
||||
-- a directory object with a thing entry defined
|
||||
d = .directory~new
|
||||
d~thing = "delegate implementation"
|
||||
delegator~delegate = d
|
||||
say delegator~operation
|
||||
|
||||
-- a class we can use as a delegate
|
||||
::class thing
|
||||
::method thing
|
||||
return "delegate implementation"
|
||||
|
||||
::class delegator
|
||||
::method init
|
||||
expose delegate
|
||||
use strict arg delegate = .nil
|
||||
|
||||
::attribute delegate
|
||||
|
||||
::method operation
|
||||
expose delegate
|
||||
if delegate == .nil then return "default implementation"
|
||||
|
||||
-- Note: We could use delegate~hasMethod("THING") to check
|
||||
-- for a THING method, but this will fail of the object relies
|
||||
-- on an UNKNOWN method to handle the method. By trapping
|
||||
-- NOMETHOD conditions, we can allow those calls to go
|
||||
-- through
|
||||
signal on nomethod
|
||||
return delegate~thing
|
||||
|
||||
nomethod:
|
||||
return "default implementation"
|
||||
Loading…
Add table
Add a link
Reference in a new issue