建立一個新的輸入範圍型別
InputRange
概念有三個功能,例如:
struct InputRange(T) {
@property bool empty();
@property T front();
void popFront();
}
總之,一種方式
- 檢查範圍是否為空
- 獲取當前元素
- 轉到下一個元素
要使我們自己的型別成為 InputRange
,我們必須實現這三個功能。讓我們來看看無限的正方形序列。
struct SquaresRange {
int cur = 1;
@property bool empty() {
return false;
}
@property int front() {
return cur^^2;
}
void popFront() {
cur++;
}
}
有關斐波那契的例子,請參閱 D 之旅 。