Scala 范圍

2022-05-13 14:26 更新

有些代碼需要從一些開始到結(jié)束創(chuàng)建一個(gè)數(shù)字序列。一個(gè) Range 常量是我們需要的。

范圍可以通過它們的開始,結(jié)束和步進(jìn)值來定義。

要在Scala中創(chuàng)建范圍,請(qǐng)使用預(yù)定義的方法,如以下代碼所示:

object Main {
  def main(args: Array[String]) {
    println(1 to 5  )
  }
}

我們還可以使用預(yù)定義的方法創(chuàng)建一個(gè)具有上限(不包括其上限)的范圍,直到如下代碼所示。

object Main {
  def main(args: Array[String]) {
    println(1 until 5 )
  }
}

對(duì)于1到5,創(chuàng)建范圍(1,2,3,4,5),但對(duì)于1到5,創(chuàng)建具有上限獨(dú)占范圍(1,2,3,4)的范圍。

我們還可以使用預(yù)定義的方法創(chuàng)建一個(gè)帶有步進(jìn)值的范圍,如下面的代碼所示。

object Main {
  def main(args: Array[String]) {
    println(1 to 20 by 4  )
  }
}

例子

以下示例顯示如何為支持它們的類型創(chuàng)建范圍:Int,Long,F(xiàn)loat,Double,Char,BigInt和BigDecimal。

object Main {
  def main(args: Array[String]) {
     var v = 1 to 10        // Int range inclusive, interval of 1, (1 to  10) 
     println(v)
     
     v = 1 until 10        // Int range exclusive, interval of 1, (1 to 9) 
     println(v)

     val v1 = 1 to 10 by 3           // Int range inclusive, every third. 
     println(v1)
     
     val v2 = 10 to 1 by -3          // Int range inclusive, every third, counting down. 
     println(v2)

     val v3 = 1L to 10L by 3         // Long 
     println(v3)
     
     
     val v4 = 1.1f to 10.3f by 3.1f  // Float with an interval != 1 
     println(v4)

     val v5 = 1.1f to 10.3f by 0.5f  // Float with an interval < 1 
     println(v5)

     val v6 = 1.1 to 10.3 by 3.1     // Double 
     println(v6)

     val v7 = "a" to "g " by 3         // Char 
     println(v7)

     val v8 = BigInt(1) to BigInt(10) by 3 
     println(v8)
     
     val v9 = BigDecimal(1.1) to BigDecimal(10.3) by 3.1 
     println(v9)
  }
}

注意

您可以創(chuàng)建包含或獨(dú)占上限的范圍,并且您可以指定不等于1的間隔:

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)