2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HaxeAdvent Calendar 2013

Day 10

JSのコードをHaxeしたときのこと。

Last updated at Posted at 2013-12-10

どもー。

最近JSで書かれたアプリケーションを、Haxeに移植しています。んで、まったく難なかったことについてはなす。

JSのコードをHaxeで書き直したことについて。

さてさてどういうJSコードかというと、JSでかかれたwebアプリケーションのクライアントサイドのJSコードでして、snap.svgでいろいろ描画して、Ajaxでjsonデータとってきたりいろいろしてますた。

結構ちゃんと、JSでクラス化してて、読んでて良いコードですた。んで、やや訳あってHaxeのコードに書きかえますた。

ほとんどはなんにも問題は起こらなかった!!!

はじめに言っておきますが、結構クラスライクなJSコードでしたので、全く悩むところはありませんでした。すんなり書けますた。

そんなことなんで、あんまりコノJS移植ネタで書くネタが少ないので困ってますww

連想配列の型とかの扱いについて。

連想配列にちょっと考えたかなー。

var x = {};
x["ten"] = 10;
x["foo"] = function(x){ return x; }

これは実行以前に、連想配列のキーと値が分かれば、構造体にするなりクラスにすれば問題ないのですが、実行時にこういうことされるとDynamicつかうしかないんですよねー。

Map<String, Dynamic>型しかないけど、Dynamicつかいたくない。

けどDynamicは使いたくない。補完効かなくなるし。
まぁ、仕方ないけど、Dynamicを使うしかないんですよねー。

できるだけ、Dynamicを解消しておく。

なので、Dynamic嫌いなので、さっさとDynamicな変数を解消しておきますた。

class Sample{
	public static function main(){
		var map : Map<String, Dynamic> = ["one" => 1, "foo" => function(x){ return x; }];
		var foo : Int -> Int = map.get("foo");
		trace(foo(10));
	}
}

まとめ。

もともとのJSのコードが素晴らしすぎた!!!

JSはDynamic型の変数が多くなるので、できるだけ少なくするテクニックを書きたかったけど、書けずじまいですた。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?