@porperty problem..
BLS
windevguy at hotmail.de
Mon Jun 28 15:50:18 PDT 2010
On 29/06/2010 00:07, Simen kjaeraas wrote:
> Maybe it's because you haven't added string to the setter? Just grasping
> at straws here.
>
> --
> Simen
Hi Simen, yes, thats the prob. I just have not found the @property
docs.. thanks for all the help..
This snippet works now as expected.. D properties are just fine.
Bjoern
import std.stdio;
import std.random;
void main(string[] args)
{
LoadBalancer b1 = LoadBalancer.getLoadBalancer();
LoadBalancer b2 = LoadBalancer.getLoadBalancer();
LoadBalancer b3 = LoadBalancer.getLoadBalancer();
// Confirm these are the same instance
if (b1 == b2 && b2 == b3 ) {
writeln("Same instance\n");
}
// Next, load 15 requests for a server
for (int i = 0; i < 15; i++) {
string serverName = b1.nextServer.servername;
writeln("Dispatch request to: " ~ serverName);
}
}
// D2 thread safe ?????? singleton
final class LoadBalancer {
private static LoadBalancer lb;
private Server[] servers;
static this() {
synchronized lb = new LoadBalancer;
}
private this() {
Server s1 = new Server();
s1.servername = "Server 1";
s1.id = "";
Server s2 = new Server();
s2.servername = "Server 2";
servers ~= s1;
servers ~= s2;
}
public static LoadBalancer getLoadBalancer() {
return lb;
}
@property
{
Server nextServer() { return servers[ uniform(0, servers.length) ]; }
}
// inner class
class Server {
private string _name, _id;
@property
{
string servername(string sn) { return _name = sn; }
string servername() { return _name; }
string id(string id) { return _id = id; }
string id() { return _id; }
}
}
}
More information about the Digitalmars-d-learn
mailing list