I seem to be able to crash writefln

Ary Manzana ary at esperanto.org.ar
Thu Mar 10 09:21:42 PST 2011


On 3/10/11 4:15 AM, Andrew Wiley wrote:
> On Wed, Mar 9, 2011 at 5:19 PM, Joel Christensen<joelcnz at gmail.com>  wrote:
>> This is on Windows 7. Using a def file to stop the terminal window coming
>> up.
>>
>> win.def
>> EXETYPE NT
>> SUBSYSTEM WINDOWS
>>
>> bug.d
>> import std.stdio;
>> import std.string;
>>
>> void main() {
>>         auto f = File( "z.txt", "w" );
>>         scope( exit )
>>                 f.close;
>>         string foo = "bar";
>>         foreach( n; 0 .. 10 ) {
>>                 writefln( "%s", foo );
>>                 f.write( format( "count duck-u-lar: %s\n", n ) );
>>         }
>> }
>>
>> output (from in z.txt):
>> count duck-u-lar: 0
>>
>
> My understanding is that the "0..10" isn't actually a range notation,
> and you need to use iota(0, 10). I may be wrong, but if I'm right,
> hopefully someone can explain why this syntax works?
> I remember there being a discussion about this recently; I'll see if I
> can find it.

It works because it's a specialized syntax for foreach. Oh, and I think 
in case statements you can use it too, but I don't remember if the first 
was inclusive and the second exclusive, or both, or what. But... it just 
works for those cases. For the rest you have to use iota...


More information about the Digitalmars-d-learn mailing list