!PythonとJavaScript
ちょっとPythonで書かれたものをJavaScriptに移植しようとしている。
文法がちょっと違うだけだから、目コンバートすればいけるかなー? と甘く考えていたがいろいろハマリ中
!!移植ミス
!!!綴りミス
宣言がない言語はこれが怖い
!!!var忘れ
globalが汚染されるorz
!!!new忘れ
Pythonは クラス名() でコンストラクタ起動。 JavaScriptでは new クラス名() となる。 newを忘れると undefinedが返る(returnしてない場合)
!!!左右間違いなど
leftとrightや xとy、 widthとheightなど 取り違えがち
!!名前付き引数
pythonの場合は書ける。JSの場合はoptionsとか言う名前の引数を最後に付けるのが一般的かな?とりあえず ということで可変引数はすべてデフォルト値で扱うことにしている。
!!for in
javascriptって配列のfor inがチョット怖い(連想配列としても使われていた場合におかしなことになる)ということでpythonのfor inを全部forにした。 だるい
その際 i<ar.length のlengthを忘れて i<ar とかしてはまった
!!配列の比較
JavaScriptでは [1,2] == [1,2] はfalse PythonではTrue えぇい!!
!!配列の真偽値
JavaScriptは []はtrue Pythonは[]はFalse えぇい!!
!! ==での比較のオーバーライド
JavaScriptではできない
!!yield
えっとJavaScriptではどのバージョンからできるようになったんだっけ?
とりあえず全部配列にした。(とりあえず対象のスクリプトはこれで動いたが等価ではないので何かおかしいかも
!!set
該当する組み込み型はJavaScriptにはない つくった
!!配列のユーティリティ in,index,remove
配列周りでよく使うのにJavaScriptには無い。 indexOfは新しいのにはあるんだっけ?
!!リスト内包表記
あたらしいJavaScriptにはあった気がする。 とりあえずループとifに展開だるい。
この時 制御変数を外のスコープで使ってるヤツと同じ名前にしてしまいハマる
!とりあえず
2438行にてとりあえず基本機能の移植終了。
まぁ出来るもんだなぁ
バグだらけ まずはリファクタリングだろうなぁ
!魔法陣の経験
blockdiagとMCE(魔法陣エンジン)の構造や技術はほとんど同じなので、今回の移植作業では魔法陣エンジンで培った知識と経験が役に立った。
お互いを高めていくなにかが作れるといいなw?
5643382
wiki
1311004013