はじめに
今回は高階関数についての説明をしていこうと思います
本文
まず、高階関数とは、関数を引数として受け取るか、返却物として関数を返す関数のことです。
後者だけならイメージがつきやすいかと思いますが、自分は前者で混乱することがあったので前者をメインに解説していきます。
最もよく目にするのは() -> Unit
こちらだと思います。
関数の引数にかっこがついた時点でその引数は関数になります。
ここで、カッコの中に型を持つと高階関数用の引数ということになり、高階関数を呼び出す側のラムダ式内で使うことができます。
逆に高階関数側では、引数で受け取った関数を呼び出すときには指定された型のものを渡さなければいけません。
fun hoge(fuga: (String) -> Unit) {
fuga("")
}
hoge {
println(it)
}
矢印の先は高階関数を呼び出した関数のラムダ内で返されるべき値の型を指定することができます。
そのため、よく見るUnitは何か返すわけではないが、通知のためやそれが呼び出されたときに何かをしたいために使われています。
fun hoge(fuga: () -> String) {
}
hoge {
""
}
最後に
Composeで高階関数を使う機会が増えて複雑な処理を書いているときに混乱してしまったので備忘録として書いてみました
どなたかのお役に立てれば幸いです