dcollections how to LinkList // port c# code
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Tue Jun 29 13:12:37 PDT 2010
    
    
  
On Tue, 29 Jun 2010 15:22:30 -0400, BLS <windevguy at hotmail.de> 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
    
    
More information about the Digitalmars-d-learn
mailing list