K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>> と、ここまで書いて、実際に動作するプログラムかどうか試そうとしたら、 >> 文法エラーになっちゃいました。 > >実装をちらっと見たら、すぐ原因が分かりました。 >最新版である crowbar 0.3 ではなくて、crowbar 0.1.01 を使っていた >のが原因でした。(大汗;;;) >大変失礼しました。 > >http://kmaebashi.com/programmer/devlang/index.html >のページに、最新版への配布ページへのリンクがあると、 >多少はこういう間違いが減るかもしれません… > >で、コンパイルしてみると、 >1. 単項の「!」演算子がない。(これは欲しいです) >2. C言語の「,」演算子がないので、for 文の3番目の項の > 「i.next(), j.next()」でエラー >3. closure() への代入文で「;」を忘れていた >といった問題がありました。 >直してみたものが以下の通りなんですが、 >実行すると > 33:面面面面民藥算劼boolean型には使えません。 >となります。これはなぜでしょうね。 >function ArrayIterator(anArray) { > this = new_object(); > this.theArray = anArray; > this.index = 0; > this.first = closure() { this.index = 0; }; > this.next = closure() { this.index = this.index++; }; > this.isDone = closure() { return this.index >= this.theArray.size(); }; > this.currentItem = closure() { return this.theArray[this.index]; }; > return this; >} > >function compare(i, j) { > while (i.isDone() == false && j.isDone() == false) { > if (i.currentItem() < j.currentItem()) { > return -1; > } > if (i.currentItem() > j.currentItem()) { > return 1; > } > i.next(); j.next(); > } > if (i.isDone() && j.isdone()) { > return 0; > } > if (i.isDone()) { > return -1; > } else { > return 1; > } >} > >a = {1, 2, 3, 4, 5, 6, 7, 8}; >for (i = ArrayIterator(a); i.isDone() == false; i.next()) { > print("" + i.currentItem(), " "); >} >print("\n");
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!