【Kotlin練習問題】ラムダ式

ラムダ式の書き方

Kotlinにおけるラムダ式の正式な書き方は以下のようになります。

val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y }
  • ラムダ式は常に中括弧{}で囲まれます。
  • 正式な書き方でのパラメーター宣言は中括弧内で行われ、任意で型のアノテーションをつけることができます。(x: Intにおける: Int
  • ラムダ式のボディ部分は->の後にきます。
  • もし推論されるラムダ式の戻り値の型がUnitでない場合は、ボディの最後の式(一行のみの場合もあります)が戻り値として扱われます。

もし上記のラムダ式から全ての必須でないアノテーションを無くすと、以下のようになります。

val sum = { x: Int, y: Int -> x + y }

無くてもコンパイラが理解できる部分は無くすとだいぶスッキリしますね。

問題

コレクションに偶数が含まれているかをチェックするためのラムダ式をany関数に渡してください。

any関数は引数として述語(boolean値を出す式や関数)を取り、その述語を満たす(trueになる)要素が一つでもあれば、true返します。

fun containsEven(collection: Collection<Int>): Boolean =
        collection.any { TODO() }

Kotlin Playgroundでコードの編集・動作確認ができます。

[expander_maker id=”1″ more=”答え” less=”非表示”]

答え

fun containsEven(collection: Collection<Int>): Boolean =
        collection.any {it % 2 == 0}

[解説]

他にも

fun containsEven(collection: Collection<Int>): Boolean =
        collection.any {i -> i % 2 == 0}

など書き方はありますが、一つ目が一番シンプルな書き方です。

ラムダ式のパラメータが 1 つだけのときは、i -> の代わりに  it というパラメータ名で参照することができます。

[/expander_maker]

その他の問題はこちらからどうぞ。

完全無料で通えるプログラミングスクール

プログラミング学習はどうしても一人だとつまづいてしまう時がきます。調べればわかることも少なくないですが、最初のうちは調べ方もわからないことが多いため、あまり効率的ではありません。

効率的かつ挫折せずにプログラミングを学習したい方はスクールを検討してみるのも一つの手です。

中には無料で通えるスクールや、就職保証をしてくれるスクールなどもあるので、きっとあなたの目的に応じて最適のスクールが見つかります!以下の記事で評判がよく特におすすめのスクールをいくつかピックアップしているので、スクール選びで後悔したくない方は御覧ください!

https://codelabsjp.net/best-programming-school/

おすすめ書籍

Kotlinの文法をまず学びたい!という方には以下の書籍がおすすめです。Kotlinは日本語書籍がまだ豊富とは言えない状況ですが、細かく解説されており、Kotlin入門者のかたでもつまずくことなく学習できると思います。

[itemlink post_id=”1743″]

実際にアプリを作りながら覚えていきたい!という方には以下もお勧めです。はじめに上の書籍で文法をさらっと学んでから取り組むのがお勧めです。

[itemlink post_id=”1745″]