Hirauchiホームプロフィールプログラミング作品集お問い合わせ最終更新日:2020/02/01【Kotlin基礎】スコープ関数applyの実装方法と用途を解説Kotlinプログラミングapplyの実装方法が知りたい。applyはどんな時に使うと便利なの?apply以外のスコープ関数について知りたい。apply、みなさん使っていますか?スコープ関数は、初めはなかなか理解しづらいかもしれませんが、覚えておくととても便利です。そこで本記事では、スコープ関数applyについて解説致します。スコープ関数はいくつかありますが、個人的に最も使用頻度の高い関数です。他のスコープ関数につきましては、簡単な解説と、詳細をまとめた記事へのリンクがありますので、そちらをご覧頂けたらと思います。目次1.スコープ関数applyの実装方法と用途について1-1.applyの基本的な使い方1-2.applyの具体的な使用用途2.apply以外のスコープ関数について3.まとめスコープ関数applyの実装方法と用途についてapplyの基本的な使い方スコープ関数applyは、公式ドキュメントで以下のように定義されております。value.(この値をレシーバーとして、指定された関数ブロックを呼び出し、この値を返します。)」と記されています。イメージしやすい形にすると、以下のようになります。関数ブロック}「レシーバー」の部分には、オブジェクトが入ります。}内で処理を行い、最後にレシーバー自身を返すというのがapplyの基本的な使い方です。実装例で詳しく見ていきましょう。20}println("私の名前は${result.name}です、${result.age}才です。"私の名前は田中です、20才です。Userクラスのインスタンスuserをレシーバーとしてapplyを呼んでいます。}内のthisは、レシーバーであるuserを指しております。このthisは、省略することも可能です。ブロック内では、userのパラメータに値を代入しております。applyは、ブロック処理後にレシーバー自身を返すので、変数resultには、パラメータに値が代入されたUserが格納されることになります。先ほどのサンプルコードは、説明のために少し丁寧に実装しておりますが、実際はもっと簡潔に実装することもできます。20}println("私の名前は${result.name}です、${result.age}才です。"私の名前は田中です、20才です。?applyの魅力に気付き始めたのではないでしょうか。次節では、よりapplyの魅力を知ってもらうため、僕自身が実際に使用する場面を、いくつか紹介したいと思います。Pointapplyを呼び出すオブジェクトをレシーバーと呼ぶブロック処理内では、レシーバーをthisで呼び出せる。続いて、僕自身が実際に使用している、applyの使用例をいくつか紹介したいと思います。"テキストが入ります。"テキストが入ります。Toast.LENGTH_SHORT).show()}container.addView(textView)container.addView(button)まずはViewをコードで実装する例です。コードの行数としてはapplyを使用しないほうが少ないですが、applyを使用した実装の方は、各Viewのまとまりや親子関係がわかりやすいと思います。mainFragment}続いての例は、Fragmentのインスタンスの生成です。Fragmentに対し、値を受け渡したい場合は、Bundleに詰めて受け渡すと思いますが、applyを使用することですっきりした実装になります。getStringArrayList("key_friends").first()}のようにして受け取ることができます。セーフコール演算子と呼ばれるもので、オブジェクトがnullでなければ、続く処理を実行してくれます。これをapplyとセットで使用することで、レシーバーのnullチェックをした上で、レシーバーにアクセスする処理を安全に実行することができます。}で、nullでないことを確認し、安全に処理を行うことができるapply以外のスコープ関数についてapply以外のスコープ関数について簡単な解説と、詳しい内容をまとめた記事へのリンクを紹介致します。runについてrunは、公式ドキュメントで以下のように定義されております。20Pointブロック処理内では、レシーバーをthisで参照できるブロック処理の最後の値を返す(レシーバーでなくてもよい)詳しい解説はこちらをご覧ください。【Kotlin基礎】スコープ関数runの実装方法と用途を解説Kotlinには、スコープ関数というシンプルですが、覚えておくと便利な関数があります。本記事では、runというスコープ関数について解説致します。letについてletは、公式ドキュメントで以下のように定義されております。5Pointブロック処理内では、レシーバーをitで参照できるブロック処理の最後の値を返す(レシーバーでなくてもよい)詳しい解説はこちらをご覧ください。本記事では、スコープ関数letについて詳しく解説しております。letはNullチェックを行う際に便利な関数でス。皆さんも、この記事を読んで、letを使いこなせるようになっていただけたらと思います。alsoについてalsoは、公式ドキュメントで以下のように定義されております。"私は伊藤、30才です。Pointブロック処理内では、レシーバーをitで参照できるレシーバー自身を返す詳しい解説はこちらをご覧ください。【Kotlin基礎】スコープ関数alsoの実装方法と用途を解説Kotlinにはスコープ関数という覚えておくと便利な関数があります。スコープ関数にはいくつか種類があるのですが、本記事では、スコープ関数alsoについて詳しく解説致します。まとめapplyを呼び出すオブジェクトをレシーバーと呼ぶブロック処理内では、レシーバーをthisで呼び出せる。}で、nullでないことを確認し、安全に処理を行うことができるTweet元太こんにちは、元太と申します。フリーランスのプログラマーとして、スマホアプリの開発をしております。現在は客先へ常駐で働いており、仕事以外の時間で、個人でアプリを開発したり、ブログの執筆等を行っております。子どもいっぱいの大家族を夢見る30歳です。