プログラミングメモ
メモなので正しくないかもしれません。
closure
- ブロック化されたコードのことを指す。
- 関数呼び出しの時にクロージャを引数として渡すことができる。
- スコープ外の変数など呼び出された環境の値を参照できる。
- lexically scoped lamda
- lexically scoped anonymous function
- function that captures the bindingds of free variables in its lexical context.
- closure は blockを使って作る事が出来る。
- closure is a nameless function object.
- closureは、closureが渡された関数の振る舞いをカスタマイズする事に使える。たとえば、ソート関数でソートする条件をclosureで決めることができる。
Block
- blocks are basically nameless function
- Lispのlambdaみたいなもの
- closureオブジェクトはコード自体とそれを実行する環境(スコープ)を持つ。よって呼び出し側のローカル変数を参照できる。呼び出し側の関数が終了していても、closureはその呼び出し側のローカル変数を保持し続ける。保持されるのはローカル変数の実体なので、他のものが変更すると、closureが使う値も変更されたものになる。
Trait
多重継承を使わずに他のクラスの機能をまとめることができる。
MVCのcontrollerクラス
controllerクラスは、actionを受け取り、outletに出力を行う。
introspection(イントロスペクション)
オブジェクト指向言語において、実行時にオブジェクトの型を得ることイントロスペクションという。