- 138 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 13:22:38 ]
- import std.stdio;
struct range { static void opSliceAssign(void delegate(size_t i) yield, size_t x, size_t y) { for(size_t i = x; i < y; ++i) yield(i); } } struct times { static void opIndexAssign(void delegate(size_t i) yield, size_t n) { for(size_t i = 0; i < n; ++i) yield(i); } } void main() { range[3..10] = (size_t i) { writefln(i); }; times[5] = (size_t i) { writefln(i); }; } そういや、continue は return で代用できるとして、break が使えないや。 何か値を返すようにするのも面倒だし、限界はあるやね。 >>137 一応「イテレータ」を指向するという名目なら、 ループするということで do は意味的にオーケー? まあ、Ruby のイテレータよろしく、 結局そこから逸脱した使われ方もされるだろうけど。
|

|