第9回 補足
a クラス オブジェクト メソッド
Kojo の Script Editor ペインで(他のIDEでも概ね同様だが)、newTurtle の名前を 9文字分もしくは途中まで入力した段階で補完キー(Ctrl+Space)を押すと、 補完の候補が表示される。
そこには、: の左側に関数の呼び出し方(関数名と 引数の並び)、右側には、 関数が返す値の型名もしくはクラス名が表示される。
newTurtleの場合、パッケージ名 net.kogics.kojo.core で修飾された、クラス名 Turtle が表示されている。
パッケージ名は世界で一意になるよう、開発元のドメイン名の並び順を逆にしたもの が前置されることで、長い名前になっている。
動作主体となる亀を指定して forwardなどの動きをさせる時の関数呼び出しは、
右図のように オブジェクト . 関数名 という形をとる。こういう形で呼び出すときは 「関数」と呼ばずに「メソッド」と呼ばれることが多い。
b 関数の書き方とプログラムの実行順序について
日本語と英語では語順が違うのはご存知だろう(右図)
関数呼び出しの場面では英語と同様に V O の順で表現される。
(現代の数学やプログラミングの基本技術が欧米語圏で発達したことを考えると納得できるだろう)
紙を、折って-それを、封筒に入れ-それを、投函する、という一連の動作を、関数的に 表現すると post(envelope(fold(paper)))のような表現になる(下図)
同様に、前回扱ったようなプログラム(の一例として
偶奇判定プログラム
) のように、 「1 プロンプト文字を用意し-それを使って、2 数値を読込み-それを、 3 偶数奇数の判定をし-その結果を、4印字する」という動作は 下図のようになる。
逆の見方をすると、
関数呼び出しは、右図のように、1 引数の評価をまず行って、引数のそれぞれの値が 確定し揃ったらその次に 2 関数本体の実行を行う、とう順序で実行される。
但し、一部のプログラミング言語(正格評価でなく遅延評価に基づく言語)では この原則は成り立たない(これについては今は知らなくて大丈夫ですが)。