JavaScript の例(4) (TypeScript)
TypeScript 版も C# 版と同様に修正します。Take 関数も間違っていたので修正します。NumbersServer クラスの GetNumbers メソッドを以下のように値を返すだけに変更します。
GetNumbers(): Numbers { return this.current_numbers; }
これだけでは最初の値がないので、コンストラクターで GenerateDecimalServer でやっていた初期化の処理を行います。
constructor() { var number: LongDecimal = new LongDecimal([]); var square_difference: LongDecimal = new LongDecimal([3]); this.current_numbers = new Numbers(number, square_difference, 0); }
GenerateDecimalServer は以下のようにします。初期化の部分はコンストラクターに移動します。
*GenerateDecimalServer(): Iterable<Numbers> { for (; ;) { this.current_numbers = yield this.current_numbers; } }
Take 関数は以下のようになります。
function* Take<T>(n: number, generator: Iterable<T>): Iterable<T> { var count = 0; for (var d of generator) { if (count == n) { break; } count++; yield d; } }