関数2

090705-one31

ネストされた関数

関数に書く関数ってことかな。
この関数の中の関数は、親の関数からのみ使用できるらしい。

[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]