RosettaCodeData/Task/Delegates/Elena/delegates-1.elena

47 lines
715 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
import extensions;
import system'routines;
interface IOperable
{
2023-09-16 17:28:03 -07:00
abstract operate();
2023-07-01 11:58:00 -04:00
}
class Operable : IOperable
{
constructor() {}
operate()
= "delegate implementation";
}
class Delegator
{
object theDelegate;
set Delegate(object)
{
theDelegate := object
}
internal operate(operable)
= "default implementation";
internal operate(IOperable operable)
= operable.operate();
operate()
<= operate(theDelegate);
}
2026-02-01 16:33:20 -08:00
public Program()
2023-07-01 11:58:00 -04:00
{
var delegator := new Delegator();
2024-03-06 22:25:12 -08:00
new object[]{nil, new Object(), new Operable()}.forEach::(o)
2023-07-01 11:58:00 -04:00
{
delegator.Delegate := o;
2025-08-11 18:05:26 -07:00
Console.printLine(delegator.operate())
2023-07-01 11:58:00 -04:00
}
}