RosettaCodeData/Task/Delegates/EMal/delegates.emal

26 lines
602 B
Plaintext

type Thingable
interface
fun thing ← text by block do end
end
type Delegate implements Thingable
model
fun thing ← text by block
return "delegate implementation"
end
end
type Delegator
model
Thingable delegate
fun operation ← <|when(me.delegate æ null, "default implementation", me.delegate.thing())
end
fun byDelegate ← Delegator by Thingable delegate
var delegator ← Delegator()
delegator.delegate ← delegate
return delegator
end
type Main
Delegator a ← Delegator()
writeLine(a.operation())
Delegator b ← Delegator.byDelegate(Delegate())
writeLine(b.operation())