Generate range
    Ali Çehreli 
    acehreli at yahoo.com
       
    Mon Oct 22 23:02:35 UTC 2018
    
    
  
On 10/22/2018 03:51 PM, John Chapman wrote:
> Given a function that returns a count of items, and another function 
> that returns an item at an index, is there anything built into Phobos 
> that can use them together to build a range?
> 
> The two functions are from an external API, eg:
> 
>    int getFontCount();
>    Item getItemAt(int index);
> 
> I was wondering if there was something like a "rangeOf" as illustrated:
> 
>    foreach (item; rangeOf!(() => getFontCount(), (i) => getItemAt(i)) {
>    }
iota and map:
alias Item = string;
Item[] items = [ "Good font", "Better font" ];
int getFontCount() {
     import std.conv : to;
     return items.length.to!int;
}
Item getItemAt(int index) {
     return items[index];
}
auto allFonts() {
}
auto itemRange() {
     import std.range : iota;
     import std.algorithm : map;
     return iota(getFontCount()).map!(i => getItemAt(i));
}
void main() {
     import std.stdio;
     writeln(itemRange());
}
Ali
    
    
More information about the Digitalmars-d-learn
mailing list