Scala/関数を使う

Scala/関数を使う

コードの見た目の柔軟性を重視しすぎているためイロイロな書き方ができるようになっている。 Ruby から影響をうけているのだが乱用しすぎて迷惑に近いと思う。

基本

Java と同じ、括弧で引数を渡して実行する

hoge("abc", 123)

引数に名前を指定して呼び出し

関数宣言で使っている仮引数名を指定してパラメータを渡すことができる。

hoge(piyo = "abc", fuga = 123)

引数が無い関数の呼び出し

関数の宣言時に明示的に引数が無いことを示して作る(引数の括弧をつけないで作る)と呼び出す場合も括弧なしで呼び出すことができる

var hoge = piyo

あたかも piyo という値が存在するかのように書けるのがネライ

引数が1つの場合の関数呼び出し

引数が1つの場合は特別なパラメータの渡し方ができて、このように括弧を省略してスペース区切りでパラメータを渡すことができる

hoge "This is a hoge"

あたかも hoge という設定の値に “This is a hoge” を指定するための設定ファイルのような書き方ができるとうのがネライ

擬似ブロック構造関数呼び出し

「引数が1つの場合の関数呼び出し」の応用で、その唯一の引数が関数の場合、何かの制御ブロックのような見た目で書くことができる

hoge { x =>
  x.y
}

あたかも if とか for とかと同じように文法上 hoge が用意されているかと錯覚するように書ける

Scala のコーディング規約で if 等のブロックの書き方がこのようにスペースを開けろとなっているのも、 この擬似ブロック記述と同一化させるためと思われる。

if (true) {
  // ....
}

関数を1つ引数に取る関数を返し引数を1つ取る関数 hoge を作るならば、このように書ける

hoge ("abc") {
  // ....
}

if と見た目上同じになる。

scala/basic/function/call.txt · 最終更新: 2020-08-03 13:16 by ore