ColdFusion クロージャー

※ベータ版の情報のため、今後変更される場合があります(機能・エディション制限等)

ColdFusion 10 beta 版マニュアル「Developing ColdFusion 10 Applications」より
http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSf23b27ebc7b554b664dd90601357fb06a77-7ffc.html

クロージャは、関数の中に定義する関数です。外側の関数で変数を宣言し、その変数を内側の関数からアクセスすることができます。

 

ColdFusion 10 beta 版マニュアル「Developing ColdFusion 10 Applications」-「Using closures」より

<cfscript>
function helloTranslator(String helloWord)
    {
        return function(String name)
            {
                return "#helloWord#, #name#";
             };
    }
helloInHindi=helloTranslator("Namaste");
helloInFrench=helloTranslator("Bonjour");
writeoutput(helloInHindi("Anna"));
//closure is formed.
//Prints Namaste, Anna.
writeoutput("<br>");
writeoutput(helloInFrench("John"));
//Prints Bonjour, John.
</cfscript>

上記の場合、ユーザー定義関数helloTranslatorはクロージャー(関数内に定義されている無名関数)を返します。戻り値は、helloInHindi, helloInFrench変数に格納されます。また、helloTranslator関数の呼び出し時には、一つの引数が渡され、外側の関数(helloTranslator)の引数hellowordとしてセットされます。

外側の関数が返された後、内側の関数が実行可能となります。クロージャーは内側の関数が実行できるようになったときを指し、helloInHindi, helloInFrench は関数自体は同じですが、それぞれ異なる引数の値を持つクロージャーということになります。

クロージャーを呼び出した時、引数(Anna や John)が内側の関数の中で使用できるのに加え、外側の関数内でセットされた変数(helloword)にもアクセスすることができます。クロージャは、生成された時点の環境への参照(外側の関数内のローカル変数値など)を保持し、参照する事が可能です。

 

ColdFusionクロージャーに関する情報サイト(一般サイトを含みます)

 

← ColdFusion10ベータ版 情報ページに戻る


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.