On Wed, 10 Dec 2008 02:40:47 +0300, tsalm <[EMAIL PROTECTED]> wrote:
Hello,
How to implement an object that can do this :
myClass.add(something)(otherthings)(thisToo);
Is it possible ?
TIA,
TSalm
Yes:
import std.stdio;
class MyClass
{
class MyClassAdder
{
MyClassAdder opCall(Foo foo)
{
_add(foo);
return this;
}
}
class MyClassRemover
{
MyClassRemover opCall(Foo foo)
{
_remove(foo);
return this;
}
}
this()
{
_adder = new MyClassAdder();
_remover = new MyClassRemover();
}
MyClassAdder add(Foo foo)
{
_add(foo);
return _adder;
}
MyClassRemover remove(Foo foo)
{
_remove(foo);
return _remover;
}
private void _add(Foo foo) { writefln("added"); }
private void _remove(Foo foo) { writefln("removed"); }
private MyClassAdder _adder;
private MyClassRemover _remover;
}
class Foo
{
}
void main()
{
MyClass myClass = new MyClass();
myClass.add(null)(null)(null);
myClass.remove(null)(null)(null);
}