Foreach problem
Tim M
a at b.com
Sat Jan 10 19:04:01 PST 2009
On Sun, 11 Jan 2009 15:59:26 +1300, Tim M <a at b.com> wrote:
> On Sun, 11 Jan 2009 15:50:54 +1300, Daniel Keep
> <daniel.keep.lists at gmail.com> wrote:
>
>>
>>
>> Tim M wrote:
>>> Why is this an error. Dmd wants to make sure that I declare a new
>>> variable in the foreach statement and not use an existing one?
>>> module test;
>>> void main()
>>> {
>>> int i;
>>> int[] nums;
>>> foreach(i; nums)
>>> {
>>> //
>>> }
>>> }
>>> dmd test.d
>>> test.d(7): Error: shadowing declaration test.main.i is deprecated
>>
>> Yes; as the error states, you're not allowed to define variables with
>> the same name as variables in an enclosing scope any more.
>>
>> -- Daniel
>
> Why does it still work for some objects?
This works:
module test;
class A
{
this()
{
//
}
}
class B
{
this()
{
//
}
int opApply (int delegate (inout B) dg)
{
return 1;
}
}
void main()
{
A a;
B b;
foreach(a; b)
{
//
}
}
More information about the Digitalmars-d-learn
mailing list