1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

男坂Advent Calendar 2020

Day 6

[Kotlin]Rangeを使って簡潔に値が範囲内かチェックする

Last updated at Posted at 2020-12-05

Rangeを使う。
変数iが1以上90以下かチェックする例。

// 昔ながらのチェック方法:1 <= i && i <= 90
if (i in (1..90)) {
    print("iは1以上90以下です")
} else {
    print("iは1未満または90より大きいです")
}

ここはIntの例だが、Comparableを実装しているクラスなら、同じ方法でチェックできる。

補足

最初、Rangeオブジェクト的なものを作成していて、ベタなチェック方法よりもパフォーマンス悪いのでは考え、調査のためにbyteコードをDecompileしてみた。

DecompileしたJavaコード
      int var2 = this.i;
      boolean var3;
      String var4;
      if (1 <= var2) {
         if (90 >= var2) {
            var4 = "iは1以上90以下です";
            var3 = false;
            System.out.print(var4);
            return;
         }
      }

      var4 = "iは1未満または90より大きいです";
      var3 = false;
      System.out.print(var4);

最終的には"1 <= i && i <= 90"が実行されていることが分かる。なので、ベタな方法と性能が劣るということはなさそう。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?