Thread overview
Dernel: !== operator documentation missing
Feb 24, 2004
Robert M. Münch
Feb 24, 2004
J C Calvarese
Feb 25, 2004
Robert M. Münch
February 24, 2004
Hi, I just found out (by pure chance) that there exists an !== operator, which seems to be for comparing objects or so. I couldn't find any documentation about this operator. Using != to compare objects bombs the kernel... Would be nice if this operator is added to the documentation.

-- 
Robert M. Münch
Management & IT Freelancer
http://www.robertmuench.de
February 24, 2004
Robert M. Münch wrote:
> Hi, I just found out (by pure chance) that there exists an !== operator,  which seems to be for comparing objects or so. I couldn't find any  documentation about this operator. Using != to compare objects bombs the  kernel... Would be nice if this operator is added to the documentation.

When I first read you message, I though you were asking how these operators work. Now, I think I misunderstood the nature of your request, but I've included some information that might be helpful if someone wants to see an example regarding this issue.


[Comparing Objects]

I included an example that demonstrates some valid syntaxes for comparing objects. The recent addition of the "is" operator may explain any lack of mention of the older "===" operator. It's important to remember that these operators compare *references*, so that even if the values of the object properties are identical, false is returned as long as the references are different.


void main()
{ 	
  Object o, p;
		
		
  /* o and p are instantiated as separate (different) objects. */
  o = new Object();
  p = new Object();
	
	
  if(o is p) printf("o and p are references to the same object.\n");
  else printf("o and p are different objects.\n");

  if(!(o is p)) printf("They're not the same.\n");
  else printf("Yes, o is the same reference as p!\n");

  if(o === p) printf("o and p are references to the same object.\n");
  else printf("o and p are different objects.\n");

  if(!(o === p)) printf("They're not the same.\n");
  else printf("Yes, o is the same reference as p!\n");

  if(o !== p) printf("They're not the same.\n");
  else printf("Yes, o is the same reference as p!\n");

	
  printf("\nNow I'm gong to make them the same...\n");
	
  delete p;
  o = p;  	/* Now they're the same. */
	
  if(o is p) printf("o and p are references to the same object.\n");
  else printf("o and p are different objects.\n");

  if(!(o is p)) printf("They're not the same.\n");
  else printf("Yes, o is the same referenceas p!\n");

  if(o === p) printf("o and p are references to the same object.\n");
  else printf("o and p are different objects.\n");

  if(!(o === p)) printf("They're not the same.\n");
  else printf("Yes, o is the same reference as p!\n");

  if(o !== p) printf("They're not the same.\n");
  else printf("Yes, o is the same reference as p!\n");
		
}

-- 
Justin
http://jcc_7.tripod.com/d/
February 25, 2004
On Tue, 24 Feb 2004 17:45:12 -0600, J C Calvarese <jcc7@cox.net> wrote:

> When I first read you message, I though you were asking how these operators work.

Hi, I just searched for them at some other D code and reverse engineered the semantic.

> I included an example that demonstrates some valid syntaxes for comparing objects. The recent addition of the "is" operator may explain any lack of mention of the older "===" operator.

Thanks a lot for this info. I must have missed this, even I scanned thru the docs yesterday... BTW: The === operator is still used in some Phobos code. Robert