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 { 処理 }
実際に書いてみよう
今回のサンプルプログラムでは、関数letの使い方の例をいくつか確認します。
実行は Kotlin の公式サイトの Playground を利用します。なお、 Playgroundでは、fun main() { … } の中にプログラムを記述します。
関数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
この記事を監修してくれた方
太田和樹(おおたかずき) 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
他にもAndroidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオンの書籍レビュー記事も合わせてご覧ください。
TechAcademyでは、初心者でもオリジナルアプリが作れるAndroidアプリ開発講座(オンラインブートキャンプ)を開催しています。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルアプリを開発することが可能です。