Equivalent of FirstOrDefault with ranges

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Sep 2 03:14:37 PDT 2016


On Friday, 2 September 2016 at 06:56:07 UTC, Lutger wrote:
> I was looking for something like FirstOrDefault* from .NET in 
> phobos. For example, I have this piece of code:
>
> string findBobOrReturnNull(string[] names)
> {
>     auto r = names.find("bob");
>     if(r.empty) return null;
>     return r.front;
> }
>
> assert(findBobOrReturnNull(["alice", "bob"]) == "bob");
> assert(findBobOrReturnNull(["alice"]) is null);
>
> How can I turn that into something like this, or is there 
> another idiomatic way to write it as a single expression?
>
> string findBobOrReturnNull(string[] names)
> {
>     return names.find("bob").firstOrDefault;
> }
>
> * 
> https://msdn.microsoft.com/en-us/library/bb340482%28v=vs.110%29.aspx

ElementType!R firstOrDefault(R)(R r, ElementType!R def = 
(ElementType!R).init)
        if(isInputRange!R)
{
     if(r.empty) return def;
     return r.front;
}


More information about the Digitalmars-d-learn mailing list