主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Boo: 関数の宣言方法やクロージャについて

                
まずはスクリプトから。関数やクロージャを作っている。

import System


def Func1(x as string):
return x
print Func1('hoge')

Func2 = def(x as string):
return x
print Func2('hoge')

Func3 = {x as string| return x}
print Func3('hoge')


Clsr1 = {x as string| x += ',';
return {y = x + ' with love'; return y};
}('From Russia')
print Clsr1()


Clsr2 = {x as string| x += ',';
return {y = x + ' with love'; return y};
}
print Clsr2('From Paris')()

print "Press any key to continue . . . "
Console.ReadKey(true)


Booには関数の宣言方法がいくらか用意されている。Pythonと同様のもの、Pythonのラムダとは別の無銘関数、ブレースによるものなど。これがクロージャをつくるときにありがたかった。

プログラミングでイベントに関数を結びつけるとき、スコープ内の変数を使いたいので無銘関数を使うことがよくある。Pythonではこのあたりが不便で、JavaScriptのように無銘関数を使えたらと思っていた。
Booでは先に示したスクリプトのように、無銘関数を数行にわたって書けるし(func2)、ブレースを使うことでも関数を用意できる(func3)。そしてブレースを使った関数の宣言は、JavaScriptライクな無銘関数でのクロージャの作成を可能とする。んー、こりゃUnityがIronPythonでなくBooを採用するわけだ。

http://boo.codehaus.org/Closures
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。