Thread overview | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
July 28, 2009 aa bug? | ||||
---|---|---|---|---|
| ||||
struct S { int i; } S[char[]] aa; void main() { aa["test"].i = 10; } Error: ArrayBoundsError D1.046 looks like a bug to me or can't structs be aa's? |
July 28, 2009 Re: aa bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Saaa escribió:
> struct S
> {
> int i;
> }
> S[char[]] aa;
> void main() {
> aa["test"].i = 10;
> }
>
> Error: ArrayBoundsError
> D1.046
>
> looks like a bug to me or can't structs be aa's?
But you never inserted anything in aa["test"].
You must do:
S s;
aa["test"] = s;
aa["test"].i = 10;
or:
S s;
s.i = 10;
aa["test"] = s;
|
July 28, 2009 Re: aa bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ary Borenszweig |
> But you never inserted anything in aa["test"].
>
> You must do:
>
> S s;
> aa["test"] = s;
> aa["test"].i = 10;
>
> or:
>
> S s;
> s.i = 10;
> aa["test"] = s;
erm, ok
Thanks
So no creation on use :)
Personally I find the declation step clutter in the first case.
Maybe promote the bug to a request?
|
July 28, 2009 Re: aa bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | On Tue, Jul 28, 2009 at 6:09 PM, Saaa<empty@needmail.com> wrote:
>
>> But you never inserted anything in aa["test"].
>>
>> You must do:
>>
>> S s;
>> aa["test"] = s;
>> aa["test"].i = 10;
>>
>> or:
>>
>> S s;
>> s.i = 10;
>> aa["test"] = s;
>
> erm, ok
> Thanks
> So no creation on use :)
> Personally I find the declation step clutter in the first case.
> Maybe promote the bug to a request?
It won't happen. The behavior you want *used* to be the AA behavior but was changed after several years and much complaining. It's not going back.
|
July 28, 2009 Re: aa bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | It won't happen. The behavior you want *used* to be the AA behavior but was changed after several years and much complaining. It's not going back. Ah history :D |
July 29, 2009 Re: aa bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Saaa | Saaa:
> struct S
> {
> int i;
> }
> S[char[]] aa;
> void main() {
> aa["test"].i = 10;
> }
>
> Error: ArrayBoundsError
> D1.046
Try:
struct S { int i; }
S[char[]] aa;
void main() {
aa["test"] = S(10);
}
In theory a Sufficiently Smart Compiler is able to optimize that code well.
Bye,
bearophile
|
July 29, 2009 Re: aa bug? | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | struct literals .. need to remember all D's features :)
D1.046 seems SS
aa["test"]=S();
works fine as well
> Try:
>
> struct S { int i; }
> S[char[]] aa;
>
> void main() {
> aa["test"] = S(10);
> }
>
> In theory a Sufficiently Smart Compiler is able to optimize that code well.
>
> Bye,
> bearophile
|
Copyright © 1999-2021 by the D Language Foundation