C# には、次のような構文を持つジェネレーター関数があります。
IEnumerable<int> GetNats(int max)
{
for (int i=0; i < max; ++i)
yield return i;
}
私のプログラミング言語 (Java、Scala、ActionScript、および C# に似た単純なオブジェクト指向プログラミング) で私が興味を持っている機能は、ジェネレータ式です。これらは本質的に、ジェネレータ関数のシンタックス シュガーです。
私の現在のお気に入りの候補は、次の構文です。
IEnumerable<int> nats =
witheach (i in range(0, 42))
yield i * 2;
式range(0, 42)
は組み込みのジェネレーター関数です。
私の質問は、C#/Java/Scala/ActionScript 型言語で、ジェネレーター式にどの構文を使用することを希望しますか? また、その理由は何ですか?
応答に影響を与える可能性のあるいくつかの要因は、Scala や ActionScript のように、私の言語の型は型の後に宣言されることです。例えば:
var myVar : SomeType = initialValue;
また、無名関数は次のようになります。
var myFunc = function(int x) {
return x + 1;
}
それ以外は、言語構文の残りの部分は Java または C# に似ています。私の言語には、foreach
C# に非常によく似たステートメントがあります。