On Tue, 29 Jun 2010 15:22:30 -0400, BLS <[email protected]> wrote:

Hi,
in C# this is  common.

private List<Server> _servers;
  _servers = new List<Server>
         {
          new Server{ Name = "ServerI", IP = "120.14.220.18" },
          new Server{ Name = "ServerII", IP = "120.14.220.19" },
          new Server{ Name = "ServerIII", IP = "120.14.220.20" },
          new Server{ Name = "ServerIV", IP = "120.14.220.21" },
          new Server{ Name = "ServerV", IP = "120.14.220.22" },
         };

D2 so far..
import dcollections.LinkList;
class LoadBalancer {
        alias LinkList!Server ServerList;
        private ServerList sl;  
        
        this() {
                sl = new ServerList;
                sl.add( new Server() );

...
}

Do I really have to create something like this
auto x = new Server(); x.Name = "Blah"; x.IP = "120.14.220.22";
s1.add(x)
(Name and IP are Server properties.)

I think I need to add some constructors that accept data. std.container has some cool construction methods.

For now, can you do something like this?

sl = new ServerList;
sl.add([
   new Server("ServerI", "120.14.220.18"),
   new Server(...)
   ...
]);

The new constructor would probably do something like this:

sl = new ServerList(
    new Server(...),
    new Server(...),
    ...
);

Does that work for you? If you need to build servers by naming fields, I'm not sure that's really a dcollections issue, D doesn't support constructing object by specifing individual field names. Alternatively, you could define an external constructor:

Server create(string name, string ip)
{
   auto retval = new Server();
   retval.Name = name;
   retval.IP = ip;
   return retval;
}

BTW, I don't think I've ever constructed a list that way in C#, it's cool :)

-Steve

Reply via email to