トップ «前の日記(2012-09-07) 最新 次の日記(2012-10-08)» 編集

Route 477



2012-09-25

[jsx] JSXでunderscore.jsを使ってみた

JSXを触ってみたのだけど、二次元配列を初期化するのにforループ回すのが面倒だと感じる体になってしまったので、 underscore.jsを呼んだりできないか試してみた。

「native class」というキーワードを使うと外部モジュールの型を記述できるらしいので、それでなんとか動いた。 まだ_.rangeと_.zipくらいしかないけど。

_.zipの型は

 static function zip(...arrays:variant): variant[];

ではなく

 static function zip(...arrays:variant[]): variant[];

のような気がするが、こう書くと_.zip([1,2],[3,4])がno function with matching argumentsというエラーになる。number[]とvariant[]は非互換なのかな?

requireについて

これのユニットテストを書こうとしてjsx --testを使ってみたんだけど、ここで困ったことが。 nodeのrequireを呼ぶところまではJSXでLispつくってみた - IT系で覚醒めたいを参考にしてなんとかなった。 が、外部ファイルの読み込みがうまく行かない。

一旦コンパイルすると大丈夫なんだけど、jsx --runやjsx --testで直接実行しようとすると、

eval('var _ = require("./underscore-min.js")');

のところで

Error: Cannot find module './underscore-min.js'

になってしまう。

どうも、jsx --testが/tmpにコンパイル結果を出力するのが原因のようで、絶対パスを指定したらうまくいった。