www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Append char to char-array in function

reply Nrgyzer <nrgyzer gmail.com> writes:
Hello everyone,

how can I add a char to a char-array by using a other class?

For example:

class A {

   private char[] text;

   this() {
   ...
      text ~= "a";
      new B(text);
      writefln(text);
   ...
   }

}

class B {

   this(char[] text) {
   ...
      text ~= "b";
   ...
   }

}

This should write "ab" in the command line, but only "a" is shown.

... Thanks for help :).
Mar 21 2010
parent reply Bane <branimir.milosavljevic gmail.com> writes:
Nrgyzer Wrote:

 Hello everyone,
 
 how can I add a char to a char-array by using a other class?
 
 For example:
 
 class A {
 
    private char[] text;
 
    this() {
    ...
       text ~= "a";
       new B(text);
       writefln(text);
    ...
    }
 
 }
 
 class B {
 
    this(char[] text) {
    ...
       text ~= "b";
    ...
    }
 
 }
 
 This should write "ab" in the command line, but only "a" is shown.
 
 ... Thanks for help :).

No, it shouldn't. What goes in B, stays in B. But if you add magic 'ref' or 'inout' keyword it might work: class B { this(inout char[] text) { ... text ~= "b"; ... } }
Mar 21 2010
next sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
Bane:
 No, it shouldn't. What goes in B, stays in B. But if you add magic 'ref' or
'inout' keyword it might work:

Use 'ref' only. If the OP also wants to know why that's the solution, the d.learn newsgroup is the right place to ask. Bye, bearophile
Mar 21 2010
parent reply Bane <branimir.milosavljevic gmail.com> writes:
bearophile Wrote:

 Bane:
 No, it shouldn't. What goes in B, stays in B. But if you add magic 'ref' or
'inout' keyword it might work:

Use 'ref' only. If the OP also wants to know why that's the solution, the d.learn newsgroup is the right place to ask. Bye, bearophile

Darn. I like inout more. Why do good keywords die first?
Mar 21 2010
parent Robert Clipsham <robert octarineparrot.com> writes:
On 21/03/10 11:40, Bane wrote:
 bearophile Wrote:

 Bane:
 No, it shouldn't. What goes in B, stays in B. But if you add magic 'ref' or
'inout' keyword it might work:

Use 'ref' only. If the OP also wants to know why that's the solution, the d.learn newsgroup is the right place to ask. Bye, bearophile

Darn. I like inout more. Why do good keywords die first?

inout still works in D1, in D2 it has a new meaning though to save writing out a function 3 times for const/immutable/mutable (http://www.digitalmars.com/d/2.0/function.html#inout-functions).
Mar 21 2010
prev sibling parent Nrgyzer <nrgyzer gmail.com> writes:
Bane Wrote:

 Nrgyzer Wrote:
 
 Hello everyone,
 
 how can I add a char to a char-array by using a other class?
 
 For example:
 
 class A {
 
    private char[] text;
 
    this() {
    ...
       text ~= "a";
       new B(text);
       writefln(text);
    ...
    }
 
 }
 
 class B {
 
    this(char[] text) {
    ...
       text ~= "b";
    ...
    }
 
 }
 
 This should write "ab" in the command line, but only "a" is shown.
 
 ... Thanks for help :).

No, it shouldn't. What goes in B, stays in B. But if you add magic 'ref' or 'inout' keyword it might work: class B { this(inout char[] text) { ... text ~= "b"; ... } }

Thanks, that's exactly what I needed :)
Mar 21 2010