June 28, 2010
On 28/06/2010 22:58, Steven Schveighoffer wrote:
> I wasn't aware that @property implies auto.  I guess that makes sense,
> but I didn't consider it anything but a hint to the compiler about how
> it could be called, not that did anything with the type.

Hm,  this snippet does not compile :
class Server {
	private string _name, _id;

	@property servername(string name) {
		_name = name;
	}
	@property string servername() {
		return _name;
	}
}

remove string from @property and it works.

On the other hand ..
	@property Server nextServer() {
		return servers[0];
	}
compiles fine !
Guess we need the official documents...
Bjoern
June 28, 2010
On 28/06/2010 23:00, Steven Schveighoffer wrote:
>
> http://www.digitalmars.com/d/2.0/function.html#property-functions
>
> -Steve

Makes sense :) thanks
June 28, 2010
BLS <windevguy@hotmail.de> wrote:

> Hm,  this snippet does not compile :
> class Server {
> 	private string _name, _id;
>
> 	@property servername(string name) {
> 		_name = name;
> 	}
> 	@property string servername() {
> 		return _name;
> 	}
> }
>
> remove string from @property and it works.

Maybe it's because you haven't added string to the setter? Just grasping
at straws here.

-- 
Simen
June 28, 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; }
		}
	}
}
1 2
Next ›   Last »