Re: How to make AA key a pointer

2018-02-20 Thread Clinton via Digitalmars-d-learn

On Monday, 19 February 2018 at 15:02:29 UTC, ketmar wrote:

Clinton wrote:


On Monday, 19 February 2018 at 14:55:01 UTC, Clinton wrote:

[...]


Sorry, on second look my explanation isn't very clear. I want 
to know if:


bool[string] myAA;

myAA[contact.id] = true; // Does this copy contact.id or is 
this a pointer to contact.id?


there is absolutely no reason to copy `string` ever, as it is 
`immutable`. and compiler knows that. anyway, why don't you 
just check it by writing the code first?


import std.stdio;
void main () {
int[string] a;
string s = "test";
writefln("%08x", s.ptr);
a[s] = 666;
s = "test1";
writefln("%08x", s.ptr);
a[s] = 42;
foreach (string k; a.byKey) writefln("%08x", k.ptr);
}


Thanks. I actually did a similar test a little while ago and 
found it out. Thanks for confirming. I still struggle a bit with 
these basic things.


Re: How to make AA key a pointer

2018-02-19 Thread ketmar via Digitalmars-d-learn

Clinton wrote:


On Monday, 19 February 2018 at 14:55:01 UTC, Clinton wrote:

Hi all, I need advice from better developers on this concern.

I'm using an AA to reference another array for quicker access:

[...]


Sorry, on second look my explanation isn't very clear. I want to know if:

bool[string] myAA;

myAA[contact.id] = true; // Does this copy contact.id or is this a 
pointer to contact.id?


there is absolutely no reason to copy `string` ever, as it is `immutable`. 
and compiler knows that. anyway, why don't you just check it by writing the 
code first?


import std.stdio;
void main () {
int[string] a;
string s = "test";
writefln("%08x", s.ptr);
a[s] = 666;
s = "test1";
writefln("%08x", s.ptr);
a[s] = 42;
foreach (string k; a.byKey) writefln("%08x", k.ptr);
}


Re: How to make AA key a pointer

2018-02-19 Thread Rene Zwanenburg via Digitalmars-d-learn

On Monday, 19 February 2018 at 14:57:47 UTC, Clinton wrote:

On Monday, 19 February 2018 at 14:55:01 UTC, Clinton wrote:

Hi all, I need advice from better developers on this concern.

I'm using an AA to reference another array for quicker access:

[...]


Sorry, on second look my explanation isn't very clear. I want 
to know if:


bool[string] myAA;

myAA[contact.id] = true; // Does this copy contact.id or is 
this a pointer to contact.id?


It's a pointer. In D, string is an alias to immutable(char)[] 
(Slice of immutable characters). A slice is a combination of 
pointer and length.


Re: How to make AA key a pointer

2018-02-19 Thread Clinton via Digitalmars-d-learn

On Monday, 19 February 2018 at 14:55:01 UTC, Clinton wrote:

Hi all, I need advice from better developers on this concern.

I'm using an AA to reference another array for quicker access:

[...]


Sorry, on second look my explanation isn't very clear. I want to 
know if:


bool[string] myAA;

myAA[contact.id] = true; // Does this copy contact.id or is this 
a pointer to contact.id?