Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
April 04, 2012 Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
I'm playing around with associative arrays right now and I can't seem to figure out how to add additional objects to the array. I tried insert but it doesn't recognize both arguments. Also, if I do this it produces an error: Node[bool] test; Node node; Node[bool] temp = [ false:node ]; test ~= temp; Error 1 Error: cannot append type Node[bool] to type Node[bool] C:\Users\CP\Documents\Visual Studio 2010\Projects\D\STDS\NPC.d 256 Does this mean you can't use the append operator on associative arrays ? ( this one ~= ) ? |
April 04, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris Pons | On Wed, Apr 04, 2012 at 08:57:54PM +0200, Chris Pons wrote: > I'm playing around with associative arrays right now and I can't seem to figure out how to add additional objects to the array. I tried insert but it doesn't recognize both arguments. > > Also, if I do this it produces an error: > > Node[bool] test; > > Node node; > > Node[bool] temp = [ false:node ]; > > test ~= temp; Try: temp[false] = node; T -- One Word to write them all, One Access to find them, One Excel to count them all, And thus to Windows bind them. -- Mike Champion |
April 04, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris Pons | On 2012-04-04 20:57, Chris Pons wrote: > I'm playing around with associative arrays right now and I can't > seem to figure out how to add additional objects to the array. I > tried insert but it doesn't recognize both arguments. > > Also, if I do this it produces an error: > > Node[bool] test; > > Node node; > > Node[bool] temp = [ false:node ]; > > test ~= temp; > > > Error 1 Error: cannot append type Node[bool] to type > Node[bool] C:\Users\CP\Documents\Visual Studio > 2010\Projects\D\STDS\NPC.d 256 > > Does this mean you can't use the append operator on associative > arrays ? ( this one ~= ) ? Yes, since for an associative array you need to add both a key and a value. The syntax used is this: aa[key] = value; i.e. test[false] = node; -- /Jacob Carlborg |
April 04, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris Pons | You're trying to append to something that's not an array, you haven't set the value part to be an array so you're doing doing the same as: int a; a ~= 5; which obviously doesn't work. If you want to append to an associative array create it like this: Node[][bool] test; //Conceptually maybe clearer as Node[] test[bool] Node node; test[false] ~= node; Or set them explicitly as other posters have explained if you don't want an array of values at a given key. |
April 04, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to ixid | Oops, the comment should read as follows, and test[bool] should not be on the next line. //Conceptually maybe clearer as Node[] test[bool] |
April 04, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to ixid | Ok, thanks for the help, much appreciated.
On Wednesday, 4 April 2012 at 19:57:40 UTC, ixid wrote:
> Oops, the comment should read as follows, and test[bool] should not be on the next line.
>
> //Conceptually maybe clearer as Node[] test[bool]
|
April 06, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Chris Pons | On 4/5/12 2:57 AM, Chris Pons wrote:
> I'm playing around with associative arrays right now and I can't
> seem to figure out how to add additional objects to the array. I
> tried insert but it doesn't recognize both arguments.
>
> Also, if I do this it produces an error:
>
> Node[bool] test;
>
> Node node;
>
> Node[bool] temp = [ false:node ];
>
> test ~= temp;
>
>
> Error 1 Error: cannot append type Node[bool] to type
> Node[bool] C:\Users\CP\Documents\Visual Studio
> 2010\Projects\D\STDS\NPC.d 256
>
> Does this mean you can't use the append operator on associative
> arrays ? ( this one ~= ) ?
By the way, why is it called "associative array"? A name like Hash or Map would be much better. Everyone knows what a Hash means. I don't see anyone using "associative array" to refer to a Hash. And I think this is the source of the confusion Chris has...
I mean, you can't append to an associate array. What part of it makes it an "array"?
|
April 06, 2012 Re: Insert an element into an Associative Array ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ary Manzana | On Friday, April 06, 2012 11:46:24 Ary Manzana wrote: > By the way, why is it called "associative array"? A name like Hash or Map would be much better. Everyone knows what a Hash means. I don't see anyone using "associative array" to refer to a Hash. And I think this is the source of the confusion Chris has... > > I mean, you can't append to an associate array. What part of it makes it an "array"? The term associative array is quite correct: http://en.wikipedia.org/wiki/Associative_array Also, static arrays are arrays, but you can't append to them. And most programming languages with arrays don't have any form of array concatenation (certainly, among C-based languages, D is the only one that I'm aware of). They do with strings, but strings generally aren't arrays in such languages. So, the fact that something is an array says _nothing_ about whether you can append to it. The fact that you can with D's dynamic arrays is a fantastic feature, but it is by no means guaranteed simply because they're arrays. And the very nature of an associative array pretty clearly doesn't make any sense with appending, since appending doesn't involve a key-value pair at all, so I'm honestly very surprised to see that anyone would make that mistake. - Jonathan M Davis |
Copyright © 1999-2021 by the D Language Foundation