Android

Kotlinのスコープ関数を調べて見た

投稿日:2019年1月28日 更新日:

はじめに

こんにちは、suzukiです。
今更ながらKotlinの学習を初めました。iOSの開発がメインのため、Androidのことに関しては無知のためわからないことだらけです。
本を読みながら学習中で、備忘のためこちらで記事にしていこうと思います。
今回はスコープ関数についてです。

スコープ関数とは

Kotlinではスコープ関数と呼ばれる関数群が用意されています。これらは特定の名前で参照される範囲を変更し

  • コードの簡略化
  • コードの可読性を上げる

上記を目的に使われます。必ず使わなくてはならないかというとそんなことはないらしいのですが、Kotlinの魅力の一つだと思い学んで行きたいと思います。

スコープ関数の種類について

今回説明するスコープ関数を先にあげます。

スコープ関数書式アクセス方法戻り値
withwith(関数オブジェクト){処理}thisラムダの戻り値
apply対象オブジェクト.apply{処理}this対象オブジェクト
let対象オブジェクト.let{処理}itラムダの戻り値
run対象オブジェクト.run{処理}thisラムダの戻り値

以上合計4つです。

with関数

with関数は対象のオブジェクトに対して繰り返し処理を行う場合に使います。
ラムダ式内ではthisで参照し、ラムダ式の戻り値を返します。
with(関数オブジェクト){処理}

使い方

仮に下記のようなクラスがある場合

withを使わない場合

withを使う場合

所感

インスタンスを省略してアクセスできるため描きやすい、また特定の関数の戻り値だけ必要な場合などに便利に使えそう。
thisでインスタンスを返すのであれば後述のapplyを使った方がいい気がする。
冗長になるかもしれないが戻り値の型を書くなどのルールが欲しくなるかもしれない。

apply関数

オブジェクトを生成してそこに各種設定値を渡す場合によく使用される。withと似ているが戻り値が対象オブジェクトである。
対象オブジェクト.apply{処理}

使い方

先ほどのStudentクラスでapplyを使用する場合

所感

戻り値が対象オブジェクトなので、結果がわかりやすい。
withとの使いわけは対象オブジェクトをそのまま使いたいときはapplyを使う程度の使いわけでいい気がする。

let関数

letはnull許容型を?.と一緒に使うことで扱いやすくすることができる。対象オブジェクトをitで参照できラムダ式の戻り値がletの戻り値になる。
対象オブジェクト.let{処理}

使い方

?.でnull評価+ラムダ内で処理を行い結果を返却という使われ方が多い。

所感

?.の機能で対象のオブジェクトのnull評価+何らかの処理を行うためflatMapのような使い方ができそう。
ラムダの結果は特に意識せずにswiftのif let みたいな使い方もできる。
後述のrunと比較した場合、thisがスコープ内とスコープ外で同じという点が大きく違う。

run関数

letとほぼほぼ同じだがwithやapplyのようにthisで対象のオブジェクトにアクセスが可能。

使い方

thisで参照できるようになっているため、レシーバーに対する処理になる。?:で使う場合はthisの内容はスコープの内外で同じになる。。。

所感

runという名前から何らかの処理を行い結果を返すという考え方で、レシーバーがnullだった時に何らかの処理を行って値を取得するという使い方であればletとの使いわけがしやすいかと思える。

さいごに

他にもスコープ関数はあるのですが、学習中の本で扱われているのは上記の4つでした。
それぞれまとめてみると、スコープ関数の使用するルールを決めて運用していく方がいいように感じました。
letであれば全部のパターンに使えそうですし、、、

KotlinはSwiftと似ているということで勧められて勉強しておりますが、iOSとAndroidの違いで苦戦しております。

おすすめ書籍

Kotlinスタートブック -新しいAndroidプログラミングKotlinイン・アクション速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ

blog-page_footer_336




blog-page_footer_336




-Android
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

Android Studioでエラーログを詳細表示する

1 はじめに2 初期設定でのビルドエラーメッセージ3 詳細なビルドエラーメッセージを出力4 おまけ5 さいごに6 おすすめ書籍 はじめに こんにちは。Android開発を久しぶりにやっているのですが、 ...

Android 10の概要をまとめました。

1 はじめに2 主な変更点2.1 バックグラウンドからの起動について2.2 ストレージへの権限2.3 位置情報制御2.4 Live caption2.5 Smart Reply2.6 Gesture ...

Android JavaでS3への画像アップロード

1 はじめに2 AWS上での事前準備3 Android StudioのGradleでAWS SDKをインストール4 ManifestにPermissionの追加5 カメラで写真を撮影し、保存先のPat ...

【Java】スレッドについてまとめてみました

1 はじめに2 スレッドの基本について3 スレッドの利用4 Threadクラス5 Runnableインターフェース6 同期処理7 synchronized修飾子8 おわりに9 おすすめ書籍 はじめに ...

AndroidでWebViewを使用する時に押さえておきたいポイント5選

1 はじめに2 JSのAlert, Confirm, Promptが表示されない!3 読み込み中の進捗を表示する4 UserAgent5 クリアテキスト設定5.1 クリアテキストを無効にする5.2 H ...

フォロー

follow us in feedly

blog-page_side_responsive

2019年1月
 12345
6789101112
13141516171819
20212223242526
2728293031 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。
Get it on App Store
Get it on Google Play