On Thursday, 10 April 2014 at 10:00:16 UTC, John Colvin wrote:
On Thursday, 10 April 2014 at 09:47:35 UTC, Chris wrote:
Are there any drawbacks with this design, i.e. using buf.put() here
(instead of a less efficient items ~= item;)?

struct MyStruct {
 Appender!(string[]) buf;
 string name;

 this(string name) {
   this.name = name;
   buf = appender!(string[]);
 }

 public addItem(string item) {
   buf.put(item);
 }

 @property string[] items() {
   return buf.data;
 }
}

Appender supports ~ and ~=, so you can have your cake and eat it.

Ah, this one \me (= escaped me). Sorry I wasn't precise, I was wondering if it is in any way dangerous to have

@property string[] items() {
  return buf.data;
}

instead of:

string[] items;
// ...
public addItem(string item) {
  items ~= item;
}

because the two are not the same. When you print MyStruct to console you get the address of appender buf, whereas when you use string[] items you get the actual items. I'm only wondereing if using appender is potentially dangerous and could bite me later.

Reply via email to