構造体と型

typedef X = { id: Int, name: String }
class Hoge {
	public static function hoge(x: X) {}
	public static function main() {
		hoge({ id: 0 });
	}
}

これはエラー。

$ haxe hoge.hxml
Hoge.hx:5: characters 7-16 : { id : Int } has no field name
Hoge.hx:5: characters 7-16 : For function argument 'x'

フィールド足りないし、まぁ分かる。

これも駄目。

using Lambda;
typedef X = { id: Int, name: String, msg: String, hoge: Int }
class Hoge {
	public static function hoge(x: List<X>) {}
	public static function main() {
		hoge([{ name: "hoge" , msg: "hoge" }].list());
	}
}

まぁ、そうだよな。


しかし、下は通る。

using Lambda;
typedef X = { id: Int, name: String, msg: String, hoge: Int }
class Hoge {
	public static function hoge(x: List<X>) {}
	public static function main() {
		hoge([{ name: "hoge" }, { msg: "hoge" }].list());
	}
}

えー。