Filter a Range Based on a Passed In Variable

jsako spam at spam.com
Sat Jan 20 19:49:18 UTC 2018


On Saturday, 20 January 2018 at 19:09:28 UTC, Adam D. Ruppe wrote:
> On Saturday, 20 January 2018 at 19:04:06 UTC, jsako wrote:
>> I want to be able to filter a range based on a variable known 
>> at runtime. Something like this:
>>
>> [code]
>> int id = getFilterID();
>>
>> auto filteredRange = filter!(a => a.id == 
>> id)(rangeToBeFiltered);
>>
>> [/code]
>>
>> This doesn't seem to be possible, however as .filter only 
>> takes unary predicates. I tried:
>
> That should actually work. What exactly happened when you ran 
> that literal code above?

... Huh. The code I posted was a simplified case of what I 
actually have and like a fool I didn't test it first. You're 
absolutely right, the above code does work. Color me embarrassed.

In the actual code, I kept getting DMD saying "...does not match 
template declaration filter(alias predicate) if 
(is(typeof(unaryFun!predicate)))".

I think it may be a scoping issue? I'll have to look closer at it.

Thanks for the help! Sorry I wasted your time. At least this 
pointed me in the right direction to find out what is really 
going on.


More information about the Digitalmars-d-learn mailing list