Kotlintwitterのタイムラインに「runとalsoの使い所分からん」というツイートが流れてきたので。Kotlinには便利な拡張関数があるのですが、それぞれが微妙に違うので用途を結構迷います。alsoは返り値がレシーバに固定されます。レシーバの内部状態を変えるような処理(初期化など)が想定されます。letは返り値がスコープ内の最後の処理の型になります。レシーバを加工したい場合に使う事ができます。alsoでは出来ない処理です。apply)レシーバ内のthisがレシーバに固定されます。レシーバのメソッドを呼んだり、レシーバに対する処理を行うときは使いやすい。反面、スコープ外のthisに参照したいときはthis@~~と各必要がある。also)tスコープ内のthisがスコープ外と同じです。thisが変わらないのでthis@~~と書く必要が無いので楽。反面、レシーバはitなどで受け取らないといけない。スコープ内でthisを多用するときは良いかも。}letはitでレシーバにthisでスコープ外にアクセスできて任意の型を返せるので、レシーバの加工には一番適していると思います。this@HogeActivity}applyはthisがレシーバでレシーバを返すので内部状態の変更・初期化処理などに向いているかと思います。あとはthis@~が複数在るような場合はalsoだと混乱しそうなのでapplyが良いかと思います。...}KotlinのNullチェックはエルビス演算子を使うと思うのですが、nullの時に幾つか処理をして返り値が必要な時などに使えるのではないでしょうか。}}うーん、alsoはあんまり良い使い方思いつきませんね...返り値がレシーバ固定なのでレシーバに関係ない事をするあまり良くないですし、そう考えるとthisもレシーバのapplyの方がalsoに比べると使う機会が多そうな気がします。まとめKotlinの拡張関数は基本的に使ってて気持ちいいくらいなんですが、それぞれの特徴を踏まえて用途を考えて使わないと、メンバー内などで書き方の統一が難しくなるので気をつけないといけませんね。全部letでもいけるっちゃいけますからね。13:39Kotlinのrunとalsoの使い所Tweet広告を非表示にする関連記事2017-12-06KotlinJSを動かす先日Kotlin1.2がリリースされました。重要な所だけ読み返したい用です。Extensionsで注意することとくにハマった訳ではないですがやらかしそうなミスだなぁと思...2016-10-28Retrofitで503の時にメンテナンスモードを表示するKotlinは特に関係ないけど。ExpoについてLTしてきました月別アーカイブはてなブログをはじめよう!saburesanさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。