Androidミニ講座

Kotlinスコープ関数のざっくり過ぎる解説②(letとrun)

投稿日:

 

Kotlinには、処理のブロック内({ }のこと)でスコープを変えることによって、簡潔な記述が出来る便利なスコープ関数が、標準関数として用意されています。

ただ、便利な半面ちょいややこしいという面もあります。

そこで、よく使うと思われる「let と run」を、本当にざっくり過ぎる感じで解説してみました。詳しい解説は上の動画をご覧ください。

(applyとalsoについてはこちらから)

Kotlinスコープ関数のざっくり過ぎる解説①(applyとalso)

  Kotlinには、処理のブロック内({ }のこと)でスコープを変えることによって、簡潔な記述が出来る便利なスコープ関数が、標準関数として用意されています。 ただ、便利な半面ちょいややこし ...

 

本当にざっくり過ぎるまとめはこれ

スコープ関数はそもそも標準関数なので、使いみちは色々考えられるかと思うのですが、本当にざっくり言うと、「let」と「run」はnull(空っぽ)チェックのときに使えると思っておけばいいのではないかと。

 

違いは「this」と「it」

関数の定義で見てみると

letはこれ

 

runはこれ

 

どちらも、「this」をブロック内で処理して、自分の好きな戻り値を返すことが出来る(applyとalsoは自分自身しか返せない)という点では同じですが、

「run」の場合は処理対象をレシーバーとして受け取り、

「let」の場合はラムダ式の引数(it)として受け取る点が違うようです。

 

例はこんな感じ

なので、実際に例を見てみると、違いは処理対象の受け取り方(呼び出し元へのアクセスの仕方)だけです。

もともとこんなコードは

こんな感じになります。

 

 

 

runの方は、処理対象である「Intent」をレシーバーの「this」としてアクセスしており、この「this」は省略できるので「getString」の前には何もいらなくなる。その代わりブロック内外で「this」の意味合いが変わってしまう。

一方、letの方は純粋なラムダ式なので、処理対象である「Intent」はその唯一の引数「it」として受け取っているため、「getString」の前に「it」が必要になる。その代わりブロック内外で「this」の意味合いは同じまま。

 

NULLチェックの場合は「let」でよい気がする

とはいえ、Kotlinを作った天才の方々にはいろんな思惑があるかと思いますが、let・runとも最終的にはnullチェックの対象(レシーバー)を受け取って処理するものの、返すもの(戻り値)は自分で設定できるので、そうであれば、NULLチェックに関しては、より簡潔に記述できる「apply」で良いのではないかと、凡人の私は思ったりするわけであります。

実際、Android StudioでFragment(フラグメント)を作った時に自動で生成されるコードのNULLチェックには、letが使われていますし。

 

みんプロへのお問い合わせはこちらよりお気軽にお寄せ下さい


みんプロへのお問い合わせはこちらよりお気軽にお寄せ下さい

「みんなのプログラミング  by Telulu LLC(みんプロ)」について

会社概要

みんプロ最新トピックス

かなり長い代表者プロフィール

みんプロにかける想い

みんプロに頂いたお客様の声

サービス・料金体系

作成アプリ実績

みんプロ公式Facebook

みんプロ公式LINE@(登録者限定無料小冊子プレゼント!)

公式ブログで随時情報発信中!!

きーぼーのつぶやき

用語

Android

  • この記事を書いた人
北川 博之 (みんなのプログラミング by Telulu LLC 代表)

北川 博之(みんなのプログラミング by Telulu LLC 代表)

大阪府生まれ。京都大学経済学部経済学科卒業。 2000年より、日本生命保険、ニッセイアセットマネジメント、パトナム・インベストメンツ(米国)で、日本株トレーダー・アナリスト、経営企画、システム開発等の業務に従事。主に日本株の売買執行・投資分析、経営計画の策定、海外投資家向け日本株営業、社内トレーディングシステム及び経理システムの開発等を行う。 2016年、合同会社てるる設立。スマホアプリプログラマーとして「新感覚脳トレアプリ・記憶戦隊オボエルンジャー」「Meiso-一番シンプルなマインドフルネス瞑想」「ご当地的鉄道アプリ・関西鉄道駅検定(京阪神編)」など、知育・メンタルヘルス系を中心に5タイトル・計10本のAndroid・iOSアプリをリリース。 2017年、自身のこれまでの社会人経験・プログラミング経験・子育て経験をを基に、プログラミングを通じて人々の人生を豊かにして、未来に希望の持てる明るい社会の実現に貢献したいとの想いから、ビギナー向けプログラミングひろば「みんなのプログラミング by Telulu LLC」を設立し、プログラミングサポーター活動と心理カウンセリング活動を開始。3児の父。 かなり長めのプロフィールをこちらから https://minpro.net/profile-of-ceo

-Androidミニ講座

Copyright© みんプロ式・初心者向けAndroidスマホアプリ専門プログラミング講座/教室/スクール/塾-大阪府高槻市 , 2018 All Rights Reserved.