2010年06月08日

ColdFusionで構造体にキーを追加する時に注意したいこと

開発部だより 第88回


こんにちは!

iPhone4の鬼スペックぶりに、思わず3GSを遠投しそうになった ij です。


今回は、ColdFusion(以下、CF)で構造体にキーを追加する時に注意したいことをご説明したいと思います。

読者の皆様はCFで構造体にキーを追加する時、どのようにしていますでしょうか?

「そんなのStructInsert()を使うでしょ?」

と即答されそうですが、実は StructInsert() を使わなくても出来てしまいます。

下記のコードをご覧ください。
struct1、struct2という2つの構造を作り、同じ名前のキーを追加する簡単なサンプルです。

<cfscript>
//StructInsert()を使う
struct1 = StructNew();
StructInsert(struct1,"prop", "SATT");

//StructInsert()を使わない
struct2 = StructNew();
struct2.prop = "SATT";
</cfscript>

struct2の方は、StructInsert()を使っていませんが、エラーにもならずキーを追加出来てしまいます。

一見するとstruct1、struct2 ともにキー"prop"が追加されたように見えますが、実は違います。

以下のコードでダンプしてみましょう。

struct1<br />
<cfdump var="#struct1#" />
<br />
struct2<br />
<cfdump var="#struct2#" />

結果はこうなります。

20100608SATTblog_cfdump.jpg

StructInsert()を使わなかったstruct2のキー"prop"が大文字になっていますね。
*ColdFusionの設定によっては上記のような結果にならない場合もあります。

CFで完結するアプリケーションであればあまり気にする必要は無いのかもしれませんが、RemoteObjectを利用して値をFlash、Flexアプリケーション等に返す場合は、当然の事ながら大文字/小文字を区別するので注意しなくてはなりません。

普通にStructInsert()を使用していれば、まず問題にはならないのですが、FlashでActionScriptを記述しているところからColdFusionを使い始めた私は、ついつい上記のサンプルコードのstruct2のような記述をしてしまいハマる事がありました^^;


教訓:面倒くさがらずにStructInsert()を使いましょう(笑


ではまた!!
posted by ij at 14:27
開発部だより | コメント(1) | トラックバック(0)
この記事へのコメント
こんにちは、説明していただいて、ありがとうございます。ColdFusion(以下、CF)で構造体にキーを追加する時に注意したいことをご説明することなんか、確かに役たちになりますわ
Posted by スマートフォン at 2010年06月24日 12:42
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック