1

imageNew で作成された画像を取り込み、画像を返す cfscript 関数があります。宣言でそれをどのように指定しますか? 私はこれまでのところこれを持っています:

function image_mutate(imageIn, Array mutations) {

imageIn に使用するデータ型は何ですか? これまで血まみれの役に立たないドキュメントはそれを「ColdFusionイメージ」としてリストし、メタデータを取得すると、それは「java.lang.class」としてリストされますが、これはほとんど具体的ではありません。

4

2 に答える 2

6

使用any:

function image_mutate(any imageIn, array mutations) {}

これは、単純な型、配列、構造体、またはクラスの代わりに使用できます。ColdFusion は厳密に型指定された言語ではないため、これは ColdFusion で多く見られます。

何かが画像であることを本当に確認する必要がある場合は、ここisImage()に記載されている関数を使用してください。

于 2011-03-10T13:05:55.250 に答える
2

返される実際のタイプはcoldfusion.image.Imageです。java.lang.Classがほぼ完成しました。これは、coldfusion.image.Imageが何であるかを表すjava.lang.Classの実際のインスタンスです。私たちが扱っているクラスの種類を見つけるには、java.lang.Classにいくつか質問する必要があります。

<cfdump var="#ImageNew()#"/>
<cfdump var="#GetMetaData(ImageNew())#"/>
<cfdump var="#GetMetaData(ImageNew()).getCanonicalName()#"/>
<cfdump var="#GetMetaData(ImageNew()).getName()#"/>
<cfdump var="#GetMetaData(ImageNew()).getSimpleName()#"/>

そこで、返ってきた回答に基づいて、いくつかのシナリオを試しました。

<cffunction name="GetImage" access="private" output="false" returntype="Struct">
    <cfreturn ImageNew()/>
</cffunction>

<cffunction name="GetImage" access="private" output="false" returntype="coldfusion.image.Image">
    <cfreturn ImageNew()/>
</cffunction>

<cffunction name="GetImage" access="private" output="false" returntype="Image">
    <cfreturn ImageNew()/>
</cffunction>

ただし、実際には、実行時にそれらすべてが失敗しました。

The value returned from the GetImage function is not of type Struct.
The value returned from the GetImage function is not of type coldfusion.image.Image.
The value returned from the GetImage function is not of type Image.

それらが失敗した理由は、ColdFusionがcoldfusion.image名前空間にインポートせずにコードをコンパイルするためだと思います。確かに、それはImageNew()でそれを利用しますが、それはおそらくcoldfusion.globalFunctionsのようなものにインポートしているだけです。したがって、私のCFCはcoldfusion.image.Imageが実際に何であるかを知りません。

私はあなたが使用することに固執していると思いますreturntype="Any"-ごめんなさい。私は自分のタイプを開発のために強く保ち、それから本番環境でタイプチェックをオフにするのが好きなので、そうですね。

于 2011-03-25T17:52:55.833 に答える