myClass.add(something)(otherthings)(thisToo);
Denis Koroskin
2korden at gmail.com
Tue Dec 9 15:53:40 PST 2008
On Wed, 10 Dec 2008 02:40:47 +0300, tsalm <tsalm at free.fr> 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);
}
More information about the Digitalmars-d-learn
mailing list