ネストされた関数
関数に書く関数ってことかな。
この関数の中の関数は、親の関数からのみ使用できるらしい。
[as3]
//メソッドiteru
public function iteru(){
//ネストされた関数ito()の呼び出し
ito();
//ネストされた関数ito()の定義
function ito(){
//関数本体をここに記入
}
}
[/as3]
関数iteruの中で、なんか面倒な処理をさせたい場合に、
面倒な処理を関数itoで実行してしまうって方法。
複雑な計算で、しかも同一関数内で何度も使いそうな場合に使えるかも。
ソースファイルレベルの関数
同一ファイル内のパッケージ本体外に書いた関数は、
同じファイル内からだったらどこからでも利用できるっぽい。
[as3]
package{
//ここでもitoは使用可能
class iteru(){
//ここでもitoは使用可能
public function iteru(){
//ここでもitoは使用可能
}
}
}
function ito(){
//itoの処理
}
[/as3]
ちなみに、この関数itoには「function」や「internal」などの
アクセス制御指定子は含めてダメらしい。
関数内からの定義へのアクセス
どこに関数を置くかによって、そのプログラムの
定義(変数、メソッド、クラス、名前空間など)に
アクセスできるかが決まるらしい。
詳細説明省略。
値としての関数
関数はインスタンスによって表されるので、
値と同じように変数に代入したりすることができる。
[as3]
function iteru(){
//プログラム
}
var ito=iteru;
[/as3]
こうすることによって、
[as3]
ito();
[/as3]
とすると、結果的に「iteru()」を呼びだすことになるらしい。
関数リテラルのシンタックス
よくわからんかったw
[as3]
var square = function(n){
return n * n;
}
square(5);
[/as3]
この方法はsetInterval関数と併用して使用されることがあるらしい。
[as3]
package{
import flash.utils.setInterval;
public class iteruClock{
public function iteruClock(){
//1秒おきに関数リテラルを実行
setIntval(function(){
trace("iteru-tick!");
} , 1000 );
}
}
}
[/as3]