LoginSignup
10
5

More than 1 year has passed since last update.

elvis 演算子の後に run

Last updated at Posted at 2017-08-24

kotlin である変数が null のときと null でないときそれぞれに処理を書く方法は,2つあります.

  • if 文
  • スコープ関数 + elvis 演算子

普通に if 文を使うと,null チェックはできますが,可変な(varで宣言された)変数の場合は,スマートキャストが効きません.

var a: String? = "a"
var b: String = ""

if (a != null) {
  // a が null でないときの処理
  // エラー
  b = a
} else {
  // a が null のときの処理
  b = "b"
}

スコープ関数とelvis演算子を使えばうまく値を取り出すことができますが, そのままだと単一の式しか書くことができません.
式でないものも書けません.

var a: String? = "a"
var b: String = ""

a?.let {
  // ok
  b = it
} ?: b = "b" // NG 代入は式ではない

nullable な変数を notnull に束縛した上で,null なときも null でないときも複数行の処理を行いたいときは, run が見やすくていいと思います.

a?.let {
  // a が null でないときの処理
  b = it
} ?: run {
  // a が null のときの処理
  // 複数行処理を書けて便利
  b = "b"
}
10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5