26 lines
470 B
Plaintext
26 lines
470 B
Plaintext
class NonDelegate { }
|
|
|
|
class Delegate {
|
|
method thing {
|
|
return "delegate implementation"
|
|
}
|
|
}
|
|
|
|
class Delegator (delegate = null) {
|
|
method operation {
|
|
|
|
if (delegate.respond_to(:thing)) {
|
|
return delegate.thing
|
|
}
|
|
|
|
return "default implementation"
|
|
}
|
|
}
|
|
|
|
var d = Delegator()
|
|
say "empty: #{d.operation}"
|
|
d.delegate = NonDelegate()
|
|
say "NonDelegate: #{d.operation}"
|
|
d.delegate = Delegate()
|
|
say "Delegate: #{d.operation}"
|