書籍「Kotlinイン・アクション」を読んで個人的に疑問に思った点や調べたことについて記載する読書記録です。
書籍の内容については記載しません。
第8章の内容
第8章 高階関数:引数と戻り値としてのラムダ
https://book.mynavi.jp/ec/products/detail/id=78137
Kotlinイン・アクション 第8章 高階関数:引数と戻り値としてのラムダ
高階関数とは何か?
別の関数を引数にとったり、戻り値として関数を返す関数
関数を返す関数を定義したいシーン
関数を返す関数は多様するとコードの見通しが悪くなりそう。
引数に関数を取るメソッドを使う場合かつ、引数に渡す処理が長い場合はコードを簡略化するために導入を検討しても良さそう。
ラムダを引数に取るメリット
柔軟性を持たせた共通化が可能
ラムダの仕組み
コンパイル時にラムダは無名関数に置き換えられる。
無名関数が大量に作られることによるオーバヘッドを防ぐために、インライン展開を検討することができる。
インライン展開
コンパイル時にinline関数の中身がそのまま使われるよう埋め込まれることをインライン展開という
メリット
余分な無名クラスが作成されない
デメリット
インライン展開することでバイナリサイズが大きくなる
インライン関数の利用を検討する場所
ラムダを引数として取るメソッドではインライン関数にすることを検討することでパフォーマンスの向上が見込める。
ラムダを使う時はreturnに気をつける
returnは最も近くのfunキーワードを使って宣言された関数からリターンする。
ラムダの場合はfunキーワードを利用しないので、外側の関数からリターンする点に注意。