配列操作で消去時に気をつけること
はまった、というか割とはまってる人がいると思ったのでメモ。
プログラミングを始めた頃にこういうことがあったと思った懐かしさから書きました。
例えば以下の配列があったとします。
var array = [0,1,2,3,4,5];
さてarray全要素を削除したいというとき、例えば以下のように書いたとします。
//配列の要素を全て削除する for(element in array) array.remove();
remove()は配列の先頭要素を削除する処理です。
このfor文の結果を表示するとこうなります。
[1,3,5]
...あれ?なんで全部削除できてないの? ちょっと考えてみてください。
理由はこうです。
このfor文は頭の良いループ君で、一回処理が終わると配列の見る位置をずらしてくれます。
[0,1,2,3,4,5] ↑ //0をみている 何らかの処理が終わると [0,1,2,3,4,5] ↑ //1をみている
といったような感じです。 ここでループ中に配列要素の削除処理をするとこうなります。
[0,1,2,3,4,5] ↑ //0をみている 削除処理をする [1,2,3,4,5] ↑ //0と同じ位置にきた1をみている 処理が一回終わったので戻る 戻った時、見る位置をずらす [1,2,3,4,5] ↑ //2をみている
わかりましたでしょうか。
ずれてしまった!!
ループ中で要素の位置が変わったことで、すべて見ることができなくなってしまいました!
ここで活躍するのは、処理をし続けてくれるwhileマシーンくんです
正しい終了条件さえ設定すれば良いだけの話です。while文で解決します。
while(array.length != 0) array.remove();
配列の長さが0になるまでと設定することで、すべての要素を削除できます。
おわかりいただけたでしょうか
配列の操作には気を付けましょう。
haxe munitでテストするメモ
munitを使ってテストするためのメモ
前提としてhaxeは導入済み
初めての場合
munitを導入していなかったら、macなのでターミナルで
haxelib install munit
これでmunitが導入される
使うときは、作業ディレクトリで
haxelib run munit config
このままEnter連打する
初期設定みたいな感じとしてやってるけど多分一回やっておけば大丈夫
設定終了
実行方法
ターミナルで作業ディレクトリに行く
haxelib run munit test -xx
xxの部分は出力したいやつ( jsだったりas3だったり )複数でもいいみたい
これだけでテストに必要なものを生成してくれる
テストが足りないと思うので
haxelib run munit create -for xxx.yyy
とかすると、test以下のxxxというパッケージにyyyTestというコードが生成される
これにやるべきテストを書いていけば大丈夫
メモ
コード上のimport文
import massive.unit.Assert
忘れないこと
コードは
public function new() {} @Test("~のテスト") public function test****():Void {}
って感じで書いていけば大丈夫かな
メモでした
そうだ、ゲームアプリ作ろう[第1回]
課題やったりしていました。 さて、環境をつくる編です
OpenFLの導入 OpenFLのページの手順に従い、インストールしていきます。 環境はMacOS X Yosemiteです。 Haxeはすでに導入しているので書きません
Limeの導入
準備の準備みたいな感じです
コンソールを立ち上げ、以下のコマンド
haxelib install lime
ダウンロードが終わるまで待ったら
haxelib run lime setup
しばらくすると
Do you want to install the "lime" command?[y/n/a] ?
と聞かれましたので、とりあえずyでやりました。
自動でインストールしてくれるのでLimeの導入は終わり。
OpenFLの導入
コンソールで
lime install openfl
少し待ちます。
終わりです。
プラットフォームごとにセットアップします。
使いたいのはiOS,Androidくらいなのでページに従ってやります。
Output directory [/opt/android-sdk]:
デフォルトっぽいディレクトリが指定してあったので、新しく作ってsudoで実行してyでオッケー
Android SDK Manager
が立ち上がりました
Install 8 packages
をクリックし、それぞれに同意をしインストール
ターミナルでDownload and install the Android NDK?
と聞かれるので、これもインストールした
(これもディレクトリを作った)
Dowmload and install Apache Ant?
と聞かれるので、インストール。同上。
これで終わり