文字列(第2引数)のIntなければなりません:
platformObj [ "フィルタ"] [ "メーカー"]私はhaXeの/ OpenFLでこれを行うことができますどのようにネストされた配列/オブジェクトアクセス
?
文字列(第2引数)のIntなければなりません:
platformObj [ "フィルタ"] [ "メーカー"]私はhaXeの/ OpenFLでこれを行うことができますどのようにネストされた配列/オブジェクトアクセス
?
openfl.utils.Object
は基本的にDynamic
のためだけtypedef
なので、以下では正常に動作します:
trace(platformObj.filters.manufacturer); // [trace] Main.hx:6: [Adobe Windows]
あなたはフィールドにアクセスするためにString
を使用する必要は、あなたがtype checkを使用して次の操作を行うことができる場合ボンネットの下に
trace((platformObj["filters"] : Object)["manufacturer"]);
、このすべてがちょうどreflection次のとおりです。
trace(Reflect.field(Reflect.field(platformObj, "filters"), "manufacturer"));
あなただけのドット表記を使用することもできます。
var platformObj = {filters: {manufacturer: ["Adobe Windows"]}};
// the type of platformObj is `{filters:{manufacturer:Array<String>}}` in this case
trace(platformObj.filters.manufacturer);
それともStringMapを使用することができます。
var platformObj = ["filters" => ["manufacturer" => ["Adobe Windows"]]];
// the type of platformObj is `Map<String, Map<String, Array<String>>>` in this case
trace(platformObj["filters"]["manufacturer"]);
haXeのはObject
を持っていますが、Dynamicを持っていません。あなたはReflectを使用して、そのフィールドを取得することができます
var platformObj:Dynamic = {filters: {manufacturer: ["Adobe Windows"]}};
var filters = Reflect.field(platformObj, "filters");
var manufacturer = Reflect.field(filters , "manufacturer");
trace(manufacturer);
あなたはhaXeのを使用している場合は、あなたがDynamic
の代わりにAny
を使用することができ3.3+。
最初の2つは安全に使用できます。ダイナミック/リフレクションを使用する最後のものには副作用があります。
オブジェクトを使用して私が言及した情報とダイナミックを含むことの違いは何ですか?ダイナミックを使用すると、オブジェクトのどのような制限が解除されますか? StringMapの言及をありがとう、私は* strict *であることを将来的に使用します。 –
Haxe自体にはObjectはありませんが、Dynamicがあります。 –
ああ、オオプス、私もOpenFLで働いているので、私はHaxeとOpenFLの両方を使っています。 –
3つ目のオプションは、私が探していたものであり、実際には私がそれに取り組んでいた直前だった - 私がとにかく尋ねたことは嬉しいです。それを行う他の方法を知ってうれしいです! –