どのようにドット表記を自動的にネスト構造を作成する

今まで、あなただけStructNewを使用して構造体を作成した()。次のようにまた、単に使用して、ドット表記法、構造体を作成することができます:

  

その行を土台SomeKeyその要素SomeValue 1の値を指定して名前付きaNewStructという名前の構造体を作成します。欠点があることに注意し、すべての新しく作成された構造体とキーの名前はすべて大文字に関係なく、あなたのコードで使用する時価総額のです。このメソッドは便利なように見えるが、それはありません。次のスニペットを考えます:


   
   

上記のスニペットを実行した後、2つの新しいキー、MyKeyのとyourKeyという名前で作成されます。は、今では入れ子構造MyKeyの名前を作成するには、次のスニペットを呼び出そうとすると仮定します:

場合は、前の行に働いていた、それは土台MyKeyの名前とMyKeyのが上書きされる前の、単純な価値があるだろう。幸いなことに、しかし、土台と簡単なキーを上書きしようとすると、ColdFusion MXでエラーがスローされます。このメソッドを使用して構造体のキーの作成に制限に直面します。 『ColdFusion MXでは、最大3つのレベルの深さの単一の呼び出しでは、この例のようにネストされた構造体を作成することができます:


   

深い場所。ColdFusionは無視し、予期しない結果が得られる以上の3つのレベルのキーを作成しようとすると、すべてが、最後の3つのキーを押します。例えば、出力は"いくつかの値"は、次のコードを実行する:

 #aefg# 

として次の3つのレベルよりも深い以上の移動しようとしない限り長くしたいただし、構造深くにネストを作成することができます現在は存在しません。場合によってはデータの場合にのみ、特定の順序でソートされて便利です。これはデータベース内の表形式のデータを行うには、構造内のデータの並べ替えは簡単ですがもう少し理解と手間がかかる。その場合、構造体の異なる果実の1ポンド当たりの価格として、以下を含むがあるとしましょう:


   
   
   
   
   

これらの価格とは、コードを使用して出力する以上のことができますループします。

 #フルーツ#:#FruitCosts [フルーツ]#/ポンド

この問題は、ここでは構造体特有のための任意のようなものがないことです。構造以上の場合は、ループ構造のキーのみをColdFusionサーバーが理解できる内部の順序で、その場合に表示される順序が格納されます。これであなたもない問題はありません。StructSortキーを挿入するため()のキー名は、それぞれの値(は自分の鍵の名前)によってソートされた配列を返します。コードStructSort()を使用果実をするためにアウトです。

 #keyArray [私]#:#FruitCosts [keyArray [私]]#/ポンド

コード間の最大の違いは、アプローチでは、各ループするための構造を引き継ぎます。最初の1つで、私たちは、どんな順番が、ColdFusionに頼っている標準的なコレクションをループを使用し、2つ目では、構造体インチ格納され、我々 StructSort()は最初、これは見てのキー名の配列を返します。呼び出しに続く:

1:りんご2:レモン3:桃4:オレンジ5:チェリー

これらの要素は、特定の順序で指定するには、見えないかもしれませんが、以下の価格は各要素に関連付けられて見て(ただし、括弧内の値は、配列ではない実際には一部です):

1:りんご(1.50)2:レモン(1.65)3:桃(1.75)4:オレンジ(1.99)5:チェリー(2.25)

ただし、キー名は、配列内の表示され、値を戻すの構造のままです。StructSortを呼び出した後に()、keyArray経由して、ソートキーの名前が含まれるコードをループ。このループの中に、keyArray [私]はオフにできますが現在のキーの名前が含まれてFruitCosts構造体へのキーの名前を供給するために使用される。場合ごとのステップに沿っては、ColdFusionの処理エンジンの次のステップは、この参照の解決方法は以下のとおり:

ステップ1:#FruitCosts [keyArray [私]]#ステップ2:#FruitCosts [keyArray [1]]#ステップ3:#FruitCosts ["りんご"]#結果:1.50

しかし、何をしたい場合は、ネストされた構造体のキーを並べ替えるか?我々は、以前は次のコードを使用して、記事からFruitCosts構造を変更しました:


   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

FruitCosts構造内の各要素には、土台2つのキーが含まれます:"ポンド"1ポンド当たり(価格)と"袋"1俵(価格)。だから今では、どのように1ポンドあたりの価格並べ替えを行うネストされた構造体のセットがありますか?StructSortの4番目の属性を()のソート値には、のようにコードに示すようにパスにドットを説明します。

 #keyArray [私]#:#FruitCosts [keyArray [私]]。ポンド#/ポンド

この方法の良いところは、非常に簡単に並べ替えを袋あたりの価格のように、コードで示すように切り替えることができます。

 #keyArray [私]#:#FruitCosts [keyArray [私]]。サック#/袋。 

現在のレベルのキーを、任意の数、深さのパスをドットに要素を追加:並べ替えることができます

その場合は、指定されたサブキーは、主要構造内のすべての最上位レベルの要素が存在しないので注意して、ColdFusionはエラーをスローします。

記事アマンダBakerによる提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"どのように自動的にネストされた構造"の自動ソフトウェアによって翻訳された作成ドット表記。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 354 users browsing the articles directory