Thread overview | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
May 28, 2011 Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
I don't seem to have a good explanation why this isn't working. All i end up getting is 'Error: cannot implicitly convert expression .... of type string[][] to joined[]'. I also get 'incompatible types for (("AADT") ? (16)): 'string' and 'int''. I've tried it with casts, and full array qualifiers. I'm using DMD 2.053. -- struct joined { string name; string partof; string preReq; } struct subrecord_parts { string name; int size; string[] notes; int identifyBy; int[] partSize; } joined[] attached; subrecord_parts[] parts; static this() { attached = [ ["MAST", "DATA", "TES3"], ["ANAM","INTV", "FACT"]]; parts = [ ["AADT", 16, ["fWeight", "iValue", "iUses", "fQuality"], -1, [4,4,4,4]], ["AODT", 24, ["iType", "fWeight", "iValue", "iHealth", "iEnchant Points", "iArmour"], -1, [4,4,4,4,4,4]]]; } -- output test.d(20): Error: cannot implicitly convert expression ([["MAST","DATA","TES3"],["ANAM","INTV","FACT"]]) of type string[][] to joined[] Error: incompatible types for (("AADT") ? (16)): 'string' and 'int' Error: incompatible types for (("AODT") ? (24)): 'string' and 'int' test.d(26): Error: cannot implicitly convert expression ([[(__error),(__error),(__error),(__error),(__error)],[(__error),(__error),(__error),(__error),(__error)]]) of type _error_[][] to subrecord_parts[] |
May 28, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Era Scarecrow | On 28/05/2011 23:57, Era Scarecrow wrote: > I don't seem to have a good explanation why this isn't working. All i end up > getting is 'Error: cannot implicitly convert expression .... of type > string[][] to joined[]'. I also get 'incompatible types for (("AADT") ? (16)): > 'string' and 'int''. I've tried it with casts, and full array qualifiers. > > I'm using DMD 2.053. > > -- > > struct joined { > string name; > string partof; > string preReq; > } > > struct subrecord_parts { > string name; > int size; > string[] notes; > int identifyBy; > int[] partSize; > } > > joined[] attached; > subrecord_parts[] parts; > > static this() { > attached = [ > ["MAST", "DATA", "TES3"], > ["ANAM","INTV", "FACT"]]; try attached = [joined("MAST", "DATA", "TES3"), joined("ANAM", "INTV", "FACT")]; > > parts = [ > ["AADT", 16, ["fWeight", "iValue", "iUses", "fQuality"], -1, [4,4,4,4]], > ["AODT", 24, ["iType", "fWeight", "iValue", "iHealth", "iEnchant Points", > "iArmour"], -1, [4,4,4,4,4,4]]]; Similar here, parts = [ subrecord_parts("AADT", 16, ["fWeight", "iValue", "iUses", "fQuality"], -1, [4,4,4,4]), subrecord_parts(...)]; etc. > } > > -- output > test.d(20): Error: cannot implicitly convert expression > ([["MAST","DATA","TES3"],["ANAM","INTV","FACT"]]) of type string[][] to joined[] > Error: incompatible types for (("AADT") ? (16)): 'string' and 'int' > Error: incompatible types for (("AODT") ? (24)): 'string' and 'int' > test.d(26): Error: cannot implicitly convert expression > ([[(__error),(__error),(__error),(__error),(__error)],[(__error),(__error),(__error),(__error),(__error)]]) > of type _error_[][] to subrecord_parts[] -- Robert http://octarineparrot.com/ |
May 28, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | == Quote from Robert Clipsham (robert@octarineparrot.com)'s article > On 28/05/2011 23:57, Era Scarecrow wrote: > try attached = [joined("MAST", "DATA", "TES3"), joined("ANAM", "INTV", > "FACT")]; > Similar here, parts = [ subrecord_parts("AADT", 16, ["fWeight", > "iValue", "iUses", "fQuality"], -1, [4,4,4,4]), subrecord_parts(...)]; etc. I was certain I tried that already. But it compiles now. Perhaps I just didn't do enough of them to confirm if it was working. Thanks |
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Era Scarecrow | Era Scarecrow:
> I don't seem to have a good explanation why this isn't working.
Also try:
struct Joined {
string name, partof, preReq;
}
struct SubrecordParts {
string name;
int size;
string[] notes;
int identifyBy;
int[] partSize;
}
Joined[] attached = [
{"MAST", "DATA", "TES3"},
{"ANAM","INTV", "FACT"}
];
SubrecordParts[] parts = [
{"AADT", 16, ["fWeight", "iValue", "iUses", "fQuality"],
-1, [4,4,4,4]},
{"AODT", 24, ["iType", "fWeight", "iValue", "iHealth",
"iEnchant Points", "iArmour"], -1, [4,4,4,4,4,4]}
];
void main() {}
In D struct names are (usually) CamelCase.
Bye,
bearophile
|
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | == Quote from bearophile (bearophileHUGS@lycos.com)'s article
> Also try:
> struct Joined {
> string name, partof, preReq;
> }
> Joined[] attached = [
> {"MAST", "DATA", "TES3"},
> {"ANAM","INTV", "FACT"}
> ];
Coming from C, this is exactly what I first tried. However since I don't recall
the {}'s being used in D it ended up using []'s, which sounds right and yet
doesn't at the same time. Like this (Which is broken).
Joined[] attached = [
["MAST", "DATA", "TES3"],
["ANAM","INTV", "FACT"]
];
Doing a search I got the impression I had to use 'static this()'.
Thanks bearophile. Let's hope I don't need much more help later :P
|
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 2011-05-29 03:56, bearophile wrote: > Era Scarecrow: > >> I don't seem to have a good explanation why this isn't working. > > Also try: > > struct Joined { > string name, partof, preReq; > } > > struct SubrecordParts { > string name; > int size; > string[] notes; > int identifyBy; > int[] partSize; > } > > Joined[] attached = [ > {"MAST", "DATA", "TES3"}, > {"ANAM","INTV", "FACT"} > ]; > > SubrecordParts[] parts = [ > {"AADT", 16, ["fWeight", "iValue", "iUses", "fQuality"], > -1, [4,4,4,4]}, > {"AODT", 24, ["iType", "fWeight", "iValue", "iHealth", > "iEnchant Points", "iArmour"], -1, [4,4,4,4,4,4]} > ]; > > void main() {} > > In D struct names are (usually) CamelCase. > > Bye, > bearophile Isn't that struct initialization syntax deprecated or to be deprecated? -- /Jacob Carlborg |
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | Jacob Carlborg:
> Isn't that struct initialization syntax deprecated or to be deprecated?
You may be right. Sometimes I read about deprecations, and then after a while I forget it because the alternative (like using the complex numbers of Phobos) is too much ugly by comparison :-)
I think we need an official deprecation list page, that includes a good rationale for each of the deprecated things.
Bye,
bearophile
|
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to bearophile | On 2011-05-29 15:01, bearophile wrote: > Jacob Carlborg: > >> Isn't that struct initialization syntax deprecated or to be deprecated? > > You may be right. Sometimes I read about deprecations, and then after a while I forget it because the alternative (like using the complex numbers of Phobos) is too much ugly by comparison :-) > > I think we need an official deprecation list page, that includes a good rationale for each of the deprecated things. > > Bye, > bearophile The would be very helpful. There are too many messages like the one from above from me. -- /Jacob Carlborg |
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | C struct initialization in D is also buggy, it doesn't take into account field initializers. It's best to get used to the D way of initializing structs. |
May 29, 2011 Re: Compile time static array issues. | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrej Mitrovic | Andrej Mitrovic:
> C struct initialization in D is also buggy, it doesn't take into account field initializers. It's best to get used to the D way of initializing structs.
I'd like it to be debugged instead :-)
Bye,
bearophile
|
Copyright © 1999-2021 by the D Language Foundation