現在、私はTranscryptを使用してPythonコードからJavascriptコードを生成しています。このように、私は次のようにPythonでジェネレータを実装することができるよ:Scala.jsのJavascriptジェネレータ
のようなJavaScriptにコンパイルされますdef color():
colors = ["red", "blue", "yellow"]
i = -1
while True:
i += 1
if i >= colors.length:
i = 0
reset = yield colors[i]
if reset:
i = -1
gen = color()
console.log(next(gen)) # red
console.log(gen.js_next(True).value) # red
console.log(next(gen)) # blue
console.log(next(gen)) # yellow
console.log(next(gen)) # red
:
var color = function*() {
var colors = list (['red', 'blue', 'yellow']);
var i = -(1);
while (true) {
i++;
if (i >= colors.length) {
var i = 0;
}
var reset = yield colors [i];
if (reset) {
var i = -(1);
}
}
};
var gen = color();
console.log (py_next (gen));
console.log (gen.next (true).value);
console.log (py_next (gen));
console.log (py_next (gen));
console.log (py_next (gen));
しかし、私はまた、Scalaの知識(とScalaのアプリケーションを持っているので、どの私はブラウザで実装したいと思います)私はScala.jsを探しています。しかし私が知る限り、このジェネレータの構築はScalaでは不可能であり、対応するyield
キーワードは別の方法で使用されています。
Scala.jsでジェネレータの構文を使用できるのですか、それともPythonとTranscryptを使用しなければなりませんか?
私の頭の上には、ジェネレータのコードを翻訳するためのhttps://github.com/scala/asyncがあります。 –
「color」を次のように定義することができます: '' color = itertools.cycle (["red"、 "blue"]) ''となります。 –
私はジェネレータに値を送るのと同じように、ジェネレータのすべての可能性を利用したいと思います。この例はあまりにも単純です。 –