Android

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

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

はじめに

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

スコープ関数とは

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

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

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

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

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

スコープ関数 書式 アクセス方法 戻り値
with with(関数オブジェクト){処理} 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開発言語を今すぐマスター 速習シリーズ

page_footer_300rect




page_footer_300rect




-Android
-

執筆者:


comment

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

CAPTCHA


関連記事

[Androidアニメーション]Shared Elements遷移

1 はじめに2 Shared Elements遷移とは3 layout xml4 Activity遷移5 その他6 さいごに はじめに 最近、雨が多いですね。そんな時は家にこもって、プログラミングをす ...

Kotlinでクラスのネストについて

1 はじめに2 クラスのネスト3 内部クラス3.1 Javaコードとの比較4 さいごに5 おすすめ書籍 はじめに こんにちは。引き続きKotlinの基本文法で、今回はクラスのネストについてです。 Ja ...

Kotlin MPAndroidChartライブラリを使い移動平均線を描画してみる。

1 はじめに2 MPAndroidChartライブラリについて2.1 ライブラリの導入2.2 描画の準備3 折れ線グラフを描画する3.1 LineChartの設定3.2 LineChart用のデータ作 ...

Kotlin MPAndroidChartライブラリを使いボリンジャーバンドを描画してみる。

1 はじめに2 ボリンジャーバンドとは2.1 ライブラリの導入2.2 描画の準備3 ボリンジャーバンドを描画する3.1 CombinedChartの設定3.2 CombinedChart用のデータ作成 ...

Kotlin ChartsライブラリとCryptowatchAPIでローソク足を描画してみる。

1 はじめに2 CryptoWatchについて2.1 OHLC3 リクエスト方法3.1 CryptoWatchのAPI4 Androidでの実装4.1 実装前の準備4.2 データクラスの作成4.3 リ ...

フォロー

follow us in feedly

page_side_300rect

2019年1月
« 12月   2月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  

アプリ情報

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