digitalmars.D - immutable/mutable strings
- Zane (14/14) Nov 19 2008 Hey all,
- Jarrett Billingsley (6/9) Nov 19 2008 Yes. The whole section on const and invariant is D2 only. If you
- Zane (5/18) Nov 19 2008 Thanks for your quick response. So then as in the example given, in D2,...
- Jarrett Billingsley (2/18) Nov 19 2008 I'm not sure, I haven't touched D2 yet.
- Brad Roberts (5/25) Nov 19 2008 Please file a bug. The whole cppstrings.html page hasn't been updated
Hey all, I am trying to get a full understanding of mutable/immutable string syntax. I understand it to be true that 'char[]' is mutable and that 'string' is immutable and is the same as invariant(char)[]. If I am incorrect on any of this, please let me know. The page: http://www.digitalmars.com/d/2.0/arrays.html gives the following example as an initialization error: char[] str1 = "abc"; // error, "abc" is not mutable I assume this is an error because of incompatible types (trying to set a mutable type to an immutable value. However, and this confuses me. The page: http://www.digitalmars.com/d/2.0/cppstrings.html char[] s1 = "hello world"; char[] s2 = "goodbye ".dup; s2[8..13] = s1[6..11]; // s2 is "goodbye world" If what I have assumed is true so far, why is the following line from above allowed?: char[] s1 = "hello world"; On a slightly different note, why does the compiler allow me to set an immutable value to a mutable type if it is an error? I am using dmd v1.033 -- Is this for v2.xx only? Thanks for any information that you can provide and sorry if these questions have already been answered. Thanks, Zane
Nov 19 2008
On Wed, Nov 19, 2008 at 8:13 PM, Zane <zane.sims gmail.com> wrote:Hey all, I am trying to get a full understanding of mutable/immutable string syntax. I understand it to be true that 'char[]' is mutable and that 'string' is immutable and is the same as invariant(char)[]. If I am incorrect on any of this, please let me know.That's all correct.On a slightly different note, why does the compiler allow me to set an immutable value to a mutable type if it is an error? I am using dmd v1.033 -- Is this for v2.xx only? Thanks for any information that you can provide and sorry if these questions have already been answered.Yes. The whole section on const and invariant is D2 only. If you click the "D 1" link at the top left, you'll get to the D 1 specification. The Digital Mars website kind of .. "guides" you into D2 with little mention of D1.
Nov 19 2008
Jarrett Billingsley Wrote:On Wed, Nov 19, 2008 at 8:13 PM, Zane <zane.sims gmail.com> wrote:Thanks for your quick response. So then as in the example given, in D2, is this initialization allowed or was it a typo/mistake in the example?: char[] s1 = "hello world"; Thanks again, ZaneHey all, I am trying to get a full understanding of mutable/immutable string syntax. I understand it to be true that 'char[]' is mutable and that 'string' is immutable and is the same as invariant(char)[]. If I am incorrect on any of this, please let me know.That's all correct.On a slightly different note, why does the compiler allow me to set an immutable value to a mutable type if it is an error? I am using dmd v1.033 -- Is this for v2.xx only? Thanks for any information that you can provide and sorry if these questions have already been answered.Yes. The whole section on const and invariant is D2 only. If you click the "D 1" link at the top left, you'll get to the D 1 specification. The Digital Mars website kind of .. "guides" you into D2 with little mention of D1.
Nov 19 2008
On Wed, Nov 19, 2008 at 8:35 PM, Zane <zane.sims gmail.com> wrote:Jarrett Billingsley Wrote:I'm not sure, I haven't touched D2 yet.On Wed, Nov 19, 2008 at 8:13 PM, Zane <zane.sims gmail.com> wrote:Thanks for your quick response. So then as in the example given, in D2, is this initialization allowed or was it a typo/mistake in the example?: char[] s1 = "hello world";Hey all, I am trying to get a full understanding of mutable/immutable string syntax. I understand it to be true that 'char[]' is mutable and that 'string' is immutable and is the same as invariant(char)[]. If I am incorrect on any of this, please let me know.That's all correct.On a slightly different note, why does the compiler allow me to set an immutable value to a mutable type if it is an error? I am using dmd v1.033 -- Is this for v2.xx only? Thanks for any information that you can provide and sorry if these questions have already been answered.Yes. The whole section on const and invariant is D2 only. If you click the "D 1" link at the top left, you'll get to the D 1 specification. The Digital Mars website kind of .. "guides" you into D2 with little mention of D1.
Nov 19 2008
Zane wrote:Jarrett Billingsley Wrote:Please file a bug. The whole cppstrings.html page hasn't been updated to properly reflect 2.0 const semantics. Later, BradOn Wed, Nov 19, 2008 at 8:13 PM, Zane <zane.sims gmail.com> wrote:Thanks for your quick response. So then as in the example given, in D2, is this initialization allowed or was it a typo/mistake in the example?: char[] s1 = "hello world"; Thanks again, ZaneHey all, I am trying to get a full understanding of mutable/immutable string syntax. I understand it to be true that 'char[]' is mutable and that 'string' is immutable and is the same as invariant(char)[]. If I am incorrect on any of this, please let me know.That's all correct.On a slightly different note, why does the compiler allow me to set an immutable value to a mutable type if it is an error? I am using dmd v1.033 -- Is this for v2.xx only? Thanks for any information that you can provide and sorry if these questions have already been answered.Yes. The whole section on const and invariant is D2 only. If you click the "D 1" link at the top left, you'll get to the D 1 specification. The Digital Mars website kind of .. "guides" you into D2 with little mention of D1.
Nov 19 2008