支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • Kotlinのitとは?(ラムダ式と

Kotlinのitとは?

Kotlinにはitというものがあります。Kotlinのitは暗黙の引数と呼ばれているもので、itはラムダ式や関数letなどに使用できます。ここではKotlinのラムダ式や関数letでitを使用する方法を説明します。

ラムダ式

Kotlinではラムダ式で関数を記述することが出来ます。

ラムダ式の基本構文

ラムダ式の基本構文は以下となります。

{引数->関数の本体}

サンプルコード

fun main(args: Array<String>) {    
   
 var multiply = {x: Int, y:Int -> x * y}
 var result: Int = multiply(10,100)
 print(result)
}
実行結果

1000

このサンプルコードではmultiplyという名前で関数を作成しています。

{x: Int, y:Int -> x * y}はint型の「x」、「y」という引数を2つもち「x」と「y」を乗算する処理を行います。

ですのでmultiply(10,100)は「x」に10、「y」に100が入り、乗算されるため1000が実行結果で表示されます。

型を指定した場合

fun main(args: Array<String>) {    
   
 var multiply: (Int, Int) -> Int = {x: Int, y:Int -> x * y}
 var result: Int = multiply(10,100)
 print(result)
}
実行結果

1000

先ほどのサンプルコードの一部を変えて記述しています。

var multiply: (Int, Int) -> Intとすることで型を指定したラムダ式を記述する事ができます

ラムダ式でitを使用する方法

先ほどのサンプルコードでは引数を2つもつ関数をラムダ式で記述しましたが、itは引数を1つの場合利用することができます。

fun main(args: Array<String>) {    

  var sum: (Int)->Int = {x -> x + 10}
  var result: Int = sum(5)
  print(result)
}
実行結果

15

これは引数に+10する関数ですが、itを使用すると以下のようなコードとなります。

fun main(args: Array<String>) {    

  var sum: (Int)->Int = {it + 10}
  var result: Int = sum(5)
  print(result)
}
実行結果

15

{x -> x + 10}を{it + 10}にしていますが同じ実行結果が出ています。暗黙的に仮引数が1つしかないラムダ式の引数はitとして定義されるためこのように記述ができます。ここでのitは引数なためこのコードでは5が入ります。そのため実行結果は15となります。

Kotlinではこのようにitを使用することでコード量を減らしたり様々な事に使用できます。

関数let

関数letはKotlinのスコープ関数の1つです。スコープ関数とは、なんらかの変数(型)に対する処理を拡張関数としてまとめて記述します。

Kotlinのスコープ関数は他にも様々ものがありますが関数letが最もよく使用されています。

基本構文

変数.let { 処理内容 }
変数?.let { 処理内容 }

処理内容はラムダ式で記述し、処理で変数自身を使用する場合は「it」と記述します。

?.はセーフコール演算子と呼ばれるものであり、「?.」が記述されている場合、nullでなければ処理が実行されます。

サンプルコード

fun main(args: Array<String>) {    
 var samplelist : MutableList<String>? = null

 // listはnullであるため実行されない以下のコードは実行されない
 samplelist?.let {
  for(item in it) println(item.toUpperCase())
 }

 // listに要素を追加
 samplelist =  mutableListOf<String>()
 samplelist.add("nagoya")
 samplelist.add("osaka")
 samplelist.add("tokyo")

// listはnullではなくなったため、処理は実行される
 samplelist?.let {
  for(item in it) println(item.toUpperCase())
 }
}
実行結果

NAGOYA
OSAKA
TOKYO

サンプルコードの説明をします。

「var samplelist : List<String>? = null」でMutableListを作成していますがnullです。 「for(item in it)」の「it」は「samplelist」を指しており、「item.toUpperCase()」は要素を大文字にするものです。「samplelist」がnullなため、最初の関数letは実行されませんが、その後に要素を追加しています。そのため、最後の関数letは実行され、実行結果が表示されます。

まとめ

Kotlinのitについて説明しました。Kotlinのitはラムダ式、関数letなど様々なものに使用できるものとなっていますので、是非皆様も使いこなせるよう学習してみてはいかがでしょうか。