Thread overview
How to read this signature? (writeTo in DIP9)
Nov 19, 2010
Graham Fawcett
Nov 19, 2010
bearophile
Nov 19, 2010
Graham Fawcett
November 19, 2010
Hi folks,

I'm having trouble deciphering this function signature, which appears in the DIP9 proposal:

void writeTo(scope delegate(in char[] data) sink,
	     string format = null) const

// from http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP9

Particularly, how does "scope" modify the delegate, and what is the meaning of the trailing "const"?

Thanks,
Graham
November 19, 2010
Graham Fawcett:

> void writeTo(scope delegate(in char[] data) sink,
> 	     string format = null) const
> 
> // from http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP9
> 
> Particularly, how does "scope" modify the delegate, and what is the meaning of the trailing "const"?

"scope" means that the sink delegate is not a true closure, its outer scope is never allocated on the heap. "const" member functions means that inside it the "this" is const, so writeTo() can't modify the class/struct attributes.

Bye,
bearophile
November 19, 2010
On Fri, 19 Nov 2010 14:43:03 -0500, bearophile wrote:

> Graham Fawcett:
> 
>> void writeTo(scope delegate(in char[] data) sink,
>> 	     string format = null) const
>> 
>> // from http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP9
>> 
>> Particularly, how does "scope" modify the delegate, and what is the meaning of the trailing "const"?
> 
> "scope" means that the sink delegate is not a true closure, its outer scope is never allocated on the heap. "const" member functions means that inside it the "this" is const, so writeTo() can't modify the class/struct attributes.

Ah! Thanks very much, bearophile!

Graham