What features of D are you using now which you thought you'd never goint to use?
Vladimir Panteleev
vladimir at thecybershadow.net
Sun Jun 23 03:37:32 PDT 2013
On Sunday, 23 June 2013 at 09:54:56 UTC, monarch_dodra wrote:
>> Isn't this what `until` does?
>
> Not quite, it returns an object that returns those items when
> iterated on. But it is not the same type.
OK, I think we had a misunderstanding what "iterate" meant. I
used it in the meaning "iterate the range at the time of the
call" as opposed to "return a range that, when iterated, iterates
its parameter".
> The problem always boils down the fact that while we can get
> the same iteration scheme, it's never the same range type:
>
> Range r = some_range;
> r = r.until!"a == 5"; //Does not compile Until!Range and Range
> do not match
> r = r.take(5); //Does not compile: Take!Range and Range do not
> match
So is it all about reusing a variable?
For this, you can use the InputRange interface, and the
InputRangeObject template which creates a crass type that
inherits from the InputRange interface.
Of course, since what you are requesting is essentially runtime
polymorphism, this will come with a performance cost of a virtual
method call for every range primitive.
More information about the Digitalmars-d
mailing list