Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,46 @@
import extensions;
import system'routines;
interface IOperable
{
abstract operate() {}
}
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);
}
public program()
{
var delegator := new Delegator();
new object[]{nil, new Object(), new Operable()}.forEach:(o)
{
delegator.Delegate := o;
console.printLine(delegator.operate())
}
}

View file

@ -0,0 +1,47 @@
import extensions;
import system'routines;
class Operable
{
Operable = self;
operate()
= "delegate implementation";
}
class Delegator
{
prop object Delegate;
constructor()
{
Delegate := nil
}
operate()
{
// if the object does not support "get&operable" message - returns nil
var operable := Delegate.Operable \ back:nil;
if (nil == operable)
{
^ "default implementation"
}
else
{
^ operable.operate()
}
}
}
public program()
{
var delegator := new Delegator();
new object[]{nil, new Object(), new Operable()}.forEach:(o)
{
delegator.Delegate := o;
console.printLine(delegator.operate())
}
}