if Condition expression can't have function?

FrankLike via Digitalmars-d digitalmars-d at puremagic.com
Fri Apr 25 00:14:46 PDT 2014


Hi,everyone,
Here has a error after run: " main.exe 11 " or " main.exe 10 ":

module main;
import std.stdio,std.conv;

template find(T)
{
     size_t find(T[] Array,T Element)
	{
		size_t i;
         foreach(T ArrayElement; Array)
		{
             if(Element==ArrayElement)
			{
				return i;
			}	
			i++;
         }
     return -1;
     }
}

void main(string[] args)
{
     int[] stuff=[0,1,2,3,4,5,6,7,8,9,10];
	try{
		
      if(auto m =(stuff.find(to!int(args[1]))>=0))
     {
         writeln(stuff," contains ",args[1]);
     }
	else
	{
		writeln(stuff," not contains ",args[1]);
	}
}

the exe result: is  contains 11 ← Error

  but this is ok:

void main(string[] args)
{
     int[] stuff=[0,1,2,3,4,5,6,7,8,9,10];
	try{
		int i =stuff.find(to!int(args[1]));
		auto x = stuff.find(to!int(args[1]))>=0;
		writeln("typeof(x) is :",x);
     if (i>=0)
		
	//if(auto m =(stuff.find(to!int(args[1]))>=0))
     {
         writeln(stuff," contains ",args[1]);
     }
	else
	{
		writeln(stuff," not contains ",args[1]);
	}
}
Why?

Thank you.

Frank


More information about the Digitalmars-d mailing list