<div dir="ltr">you can use stuff.canFind(2)<div><br><div>but sometimes it'd be more convenient to have the other way around (UFCS chains etc); </div><div><br></div><div>how about:</div><div><br></div><div><div>bool isIn(T,T2...)(T needle, T2 haystack) if(__traits(compiles,T.init==T2[0].init)){</div>
<div>  foreach(e;haystack){</div><div>    if(needle==e) return true;</div><div>  }</div><div>  return false;</div><div>}</div><div>unittest{</div><div><span class="" style="white-space:pre">     </span>assert(1.isIn(3,1,2) && !4.isIn(3,1,2));</div>
<div>}</div><div><br></div><div><br></div><div><br></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Apr 21, 2014 at 8:25 PM, Taylor Hillegeist via Digitalmars-d-learn <span dir="ltr"><<a href="mailto:digitalmars-d-learn@puremagic.com" target="_blank">digitalmars-d-learn@puremagic.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">So I find myself Doing this kind of thing very frequently. I have a Array of Somethings and i want to see if "something specific" is inside the array. I wrote a template for it. but is this the best way to do this kind of thing. I feel like it doesn't help with readability. Is there a better way? Maybe i missed something in the std library.<br>

<br>
import std.stdio;<br>
<br>
template FNDR(T){<br>
    bool isIn(T Element, T[] Array){<br>
        bool rtn=false;<br>
        foreach(T ArrayElement; Array){<br>
            if(Element==ArrayElement){<br>
                rtn=true;<br>
            }<br>
        }<br>
    return rtn;<br>
    }<br>
}<br>
<br>
void main(string[] args)<br>
{<br>
    int[3] stuff=[0,1,2];<br>
    if (FNDR!int.isIn(2,stuff))<br>
    {<br>
        writeln("Hello World!");<br>
    }<br>
}<br>
<br>
<br>
Is there a way maybe to make it look like this?<br>
<br>
import std.stdio;<br>
<br>
template FNDR(T){<br>
    bool contains(T[] Array,T Element){<br>
        bool rtn=false;<br>
        foreach(T ArrayElement; Array){<br>
            if(Element==ArrayElement){<br>
                rtn=true;<br>
            }<br>
        }<br>
    return rtn;<br>
    }<br>
}<br>
<br>
void main(string[] args)<br>
{<br>
    int[3] stuff=[0,1,2];<br>
    if (stuff.contains(2)) // Much clean! stuff.FNDR!int.contains(2) doesn't work<br>
    {<br>
        writeln("Hello World!");<br>
    }<br>
}<br>
<br>
I'm interested in what you guys think? what is the cleanest way to do this?<br>
</blockquote></div><br></div>