Anonymous user
Delegates: Difference between revisions
m
→{{header|Elena}}
Mercerenies (talk | contribs) (Latitude language added) |
|||
Line 754:
=={{header|Elena}}==
ELENA
Using multi methods:
<lang elena>import extensions
import system'routines
interface IOperable
{
abstract operate()
}
class Operable
{
constructor()
operate()
= "delegate implementation"
}
class Delegator
{
object theDelegate
[▼
if(nil == object)▼
theDelegate := nilValue.▼
▲ {
▲ }
=
internal operate(IOperable operable)
operate()
}
public program()
{
var delegator :=
delegator
console
Generic solution:
<lang elena>import extensions
import system'routines
class Operable
{
operate()
= "delegate implementation"
}
class Delegator
{
prop object
constructor
operate()
// if the object does not support "get&operable" message - returns nil
var
if (nil ==
^ "default implementation"
}
public program
{
var delegator :=
delegator
console
{{out}}
<pre>
|