www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How can I check if template variable parameter is iterable before

reply Marcone <marcone email.com> writes:
import std;

void foo(T)(T bar){
	static if (bar.isiterable()) // Need Somethin to check if bar is 
iterable.
	{
		// Execute it if bar is iterable.
		foreach (i; bar)
		{

		}
	}
	else {
		// Execute it if bar is NOT iterable.
	}

}

void main(){
	foo(1);
	foo([1, 2, 3, 4, 5]);
}
Feb 21 2021
parent reply Boris Carvajal <boris2.9 gmail.com> writes:
On Sunday, 21 February 2021 at 11:58:11 UTC, Marcone wrote:
 import std;

 void foo(T)(T bar){
 	static if (bar.isiterable()) // Need Somethin to check if bar 
 is iterable.
 	{
 		// Execute it if bar is iterable.
 		foreach (i; bar)
 		{

 		}
 	}
 	else {
 		// Execute it if bar is NOT iterable.
 	}

 }

 void main(){
 	foo(1);
 	foo([1, 2, 3, 4, 5]);
 }
https://dlang.org/library/std/traits/is_iterable.html import std.traits : isIterable; void foo(T)(T bar){ static if (isIterable!T) { ...
Feb 21 2021
parent Marcone <marcone email.com> writes:
On Sunday, 21 February 2021 at 12:47:46 UTC, Boris Carvajal wrote:
 On Sunday, 21 February 2021 at 11:58:11 UTC, Marcone wrote:
 import std;

 void foo(T)(T bar){
 	static if (bar.isiterable()) // Need Somethin to check if bar 
 is iterable.
 	{
 		// Execute it if bar is iterable.
 		foreach (i; bar)
 		{

 		}
 	}
 	else {
 		// Execute it if bar is NOT iterable.
 	}

 }

 void main(){
 	foo(1);
 	foo([1, 2, 3, 4, 5]);
 }
https://dlang.org/library/std/traits/is_iterable.html import std.traits : isIterable; void foo(T)(T bar){ static if (isIterable!T) { ...
Thank you. // Function isiterable() bool isiterable(T)(T arg) nothrow {try {static if (isIterable!T){return true;} else {return false;}} catch(Throwable){return false;}}
Feb 21 2021