What is a sink delegate?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Oct 9 22:00:01 PDT 2014


On 10/09/2014 08:06 PM, Joel wrote:
> On Tuesday, 30 September 2014 at 17:27:09 UTC, Adam D. Ruppe wrote:
>> On Tuesday, 30 September 2014 at 17:22:44 UTC, Gary Willoughby wrote:
>>> What is a sink delegate?
>>
>> Instead of
>>
>> string toString() { return "foo"; }
>>
>> for example, you would use:
>>
>> void toString(void delegate(string) sink) { sink("foo"); }
>>
>> The sink argument there is then free to view and discard the data or
>> to make a private copy using whatever scheme it desires.
>
>
> How do you use that toString? Maybe an example? Below is my failed effort.
>
> import std.stdio;
>
> struct Try {
>      string name;
>      long age;
>
>      void toString(void delegate(string) sink) {
>          sink("foo");
>      }
> }
>
> void main() {
>      Try t = Try("Joel", 35);
>      writeln(t);
> }

The signature of that toString is different from what I have been seeing 
and using. The following works:

     void toString(void delegate(const(char)[]) sink) const {

Ali



More information about the Digitalmars-d-learn mailing list