プログラミング言語の奥深い文法

変数、if文、for文などはプログラミング言語にとって一般的な文法だ。
ただ、NULL許容型、出力変数宣言など少しマニアックな文法も存在するのだ。

そういった入門サイトには登場しないような文法たちを、著者の勉強ペースにそってまとめていく。(プログラミング言語論的な)


NULL許容型

NULLを代入することを許す変数を作るのはOK
ただ、メソッドを呼び出すときはNULLではないことをチェックしてね(もしくは処理をせずNULLを返す)というもの。

int? m = null;


関数ポインタ

関数を変数として扱う機能。

有名な気もするので取り上げるか悩んだが、便利な機能なため上げておく。

(C#ではデリゲートというらしい)


文字列の補間

文字列の中に変数を混ぜれる機能。
一つ一つ文字列の結合を行わなくてよい。


名前渡し

引数の評価を、その引数を使用する直前に行う引数結合の方法。(遅延評価)
C系言語だと引数結合は、値渡しや参照渡しが有名だが、また別の方法の一つ。

Haskellや派生のScalaなどで存在する。


名前付け引数

引数の順番を意識することなく、引数を名前から指定できるようにするもの。

これはオブジェクト指向的な話で、クラス間の依存を減らすことに繋がる。
例えば、開発途中であるクラスのコンストラクタの引数を変更することになった時に、そのクラスを利用しているクラスはその変更に対応しないといけない(その数が膨大ならば最悪)。

こういうのをオブジェクト指向では依存しているという。これはどの引数があるか、引数の順番を利用するクラスは知っておかないことが原因。
ならば名前付け引数で、引数の順番は利用するクラスが知らないでも利用できるようにすることで依存を減らせる。


勉強中...

この記事が気に入ったらサポートをしてみませんか?