icon
icon

Kotlinの関数letの使い方を現役エンジニアが解説【初心者向け】

初心者向けにKotlinの関数letの使い方について解説しています。これはスコープ関数のひとつです。関数letの具体的な使用例をサンプルコードで確認しましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Kotlinの関数letの使い方について解説します。

 

本記事はTechAcademyのAndroidアプリ開発オンラインブートキャンプの内容をもとに解説しています。

 

田島悠介

今回は、Androidアプリ開発に関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Kotlinの関数letの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

Kotlinの関数letとは

関数letとは、Kotlinのスコープ関数の1つです。

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

  • with
  • run
  • apply
  • also

があります。今回はこの中でも最も多く使われる let についてご紹介します。

この他のスコープ関数や詳しい使い方については公式ドキュメントを参考にしてください。

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/index.html

 

関数letの使い方

関数letの使い方は以下の通りです。「{ 処理 }」の部分はラムダ式で記述するため、中括弧「{ }」は省略できません。また処理で変数自身を使う場合には「it」と記述します。

変数.let { 処理 }

よく使う方法で、セーフコール演算子「?.」と組み合わせる方法があります。この場合、変数が null でなければ処理が実行されます。

変数?.let { 処理 }

 

[PR] Androidアプリ開発コース

実際に書いてみよう

今回のサンプルプログラムでは、関数letの使い方の例をいくつか確認します。

実行は Kotlin の公式サイトの Playground を利用します。なお、 Playgroundでは、fun main() { … } の中にプログラムを記述します。

https://play.kotlinlang.org/

 

関数letの書き方の例

変数が null でない場合に処理を実行する書き方です。よく使うので覚えておくと良いでしょう。

var list : MutableList<String>? = null

// listはnullのため、処理は実行されない
list?.let {
  for(item in it) println(item.toUpperCase())
}

// listに要素を追加
list = mutableListOf<String>()
list.add("dog")
list.add("cat")
list.add("rabbit")

// listはnullではないので、処理は実行される
list?.let {
  for(item in it) println(item.toUpperCase())
}

コードについて解説します。はじめにlistという変数を宣言していますが、この段階で list には null が設定されています。

var list : MutableList<String>? = null

よって、次のコードはセーフコール演算子「?.」により、let配下の処理は実行されません。

// listはnullのため、処理は実行されない
list?.let {
 for(item in it) println(item.toUpperCase())
}

次に list に要素を追加します。この段階で list は null ではなくなります。

// listに要素を追加
list = mutableListOf<String>()
list.add("dog")
list.add("cat")
list.add("rabbit")

list は null ではないので、処理は実行されます。

// listはnullではないので、処理は実行される
list?.let {
  for(item in it) println(item.toUpperCase())
}

実行結果は以下の通りです。

DOG
CAT
RABBIT

 

この記事を監修してくれた方

太田和樹(おおたかずき)
ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

他にもAndroidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオンの書籍レビュー記事も合わせてご覧ください。

TechAcademyでは、初心者でもオリジナルアプリが作れるAndroidアプリ開発講座(オンラインブートキャンプ)を開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルアプリを開発することが可能です。