こんにちは😀
今回もリストとラムダ式をみていきます。
前回はリストでmap関数を使用しましたが、今回はfilter関数を使用します。
filter関数は、引数がラムダ式で、戻り値をBoolean型にします。
以下の処理は、3行目でリストを定義し、5行目でfilter関数を使っています。
引数のラムダ式は、前回も使用した「it」を使用しています。
itを使用すると処理を省略して書くことができます。
リストの要素が「2より上」であればtrueになり、要素を出力します。
fun main(args: Array<String>) {
val listA = listOf(1,3,5)
val listB = listA.filter{it > 2}
println(“A:”+listA.toString())
println(“B:”+listB.toString())
}
実行すると、Bの出力は2より大きい「3」と「5」になります。
続けて、他にもfilter関数を追加して書いてみましょう。
4行目と5行目は、リストの要素数を比較して判定しています。
4行目は要素数が1より大きければtureになり、5行目は3より大きければtureになります。
listAは要素数3になるので、5行目はfalseになります。
6行目は、要素がInt型であるかを判定しており、Int型であればfalseになります。
listAの要素は全てInt型なので、判定はfalseになりますね。
fun main(args: Array<String>) {
・・・・・・・省略・・・・・・・・
val listC = listA.filter{listA.size > 1}
val listD = listA.filter{listA.size > 3}
val listE = listA.filter{_:Int->false}
・・・・・・・省略・・・・・・・・
println(“C:”+listC.toString())
println(“D:”+listD.toString())
println(“E:”+listE.toString())
}
実行します。
DとCは判定がfalseになるため出力がありません。
filter関数は判定と合わせて使用できるので、map関数とは違う使い方ができ、処理の幅が広がりますね。
今回はここまで🤚
では、また次回。