LoginSignup
0
0

More than 1 year has passed since last update.

Kotlin KoansでKotlin入門 第8回:Lambdas

Posted at

はじめに

公式の問題集「Kotlin Koans」を解きながらKotlinを学習します。

過去記事はこちら

問題

Lambdas

コレクションに偶数が含まれているかどうかをチェックするために、any関数にラムダを渡します。any関数は少なくとも1つの要素が指定した条件を満たした場合にtrueを返します。

修正前のコード

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

問題のポイント

Kotlinは関数型プログラミングをサポートしています。Kotlinのラムダについて学びます。

ラムダ式の概要

  • ラムダ式は、常に中括弧で囲まれています
  • パラメータがもしあれば -> の前で宣言されます(パラメータの型を省略してもかまいません)
  • 本体が -> に続きます(存在する場合)
  • パラメータを1つだけ持つ場合、その宣言を( -> と一緒に)省略できます。その場合の変数名は、 it になります。

解答例

ラムダ式を省略しない形式で解答してみます。
ラムダ式は常に中括弧で囲まれ、完全な構文形式のパラメータ宣言はカッコ内にあり、型注釈を持つことができ、本体(今回だとBooleanを返す処理)は -> 記号の後に置かれます。

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

次は省略できるところはする形式で解答してみます。パラメータを1つだけ持つ場合、その宣言を( -> と一緒に)省略できます。その場合の変数名は、 it になります。

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0