Scala 常量值

2022-05-13 14:25 更新

整數(shù)常量

整數(shù)常量可以用十進(jìn)制,十六進(jìn)制或八進(jìn)制表示。

詳細(xì)總結(jié)在下表中。

類型格式例子
Decimal0或非零數(shù)字后跟零或多個(gè)數(shù)字(0-9)0, 1, 321
Hexadecimal0x后跟一個(gè)或多個(gè)十六進(jìn)制數(shù)字(0-9,A-F,a-f)0xFF, 0x1a3b
Octal0后跟一個(gè)或多個(gè)八進(jìn)制數(shù)字(0-7)a013, 077

截至Scala 2.10,一個(gè)八進(jìn)制常量已被棄用。

您可以通過(guò)在常量前添加一個(gè) -號(hào)來(lái)表示負(fù)數(shù)。

對(duì)于長(zhǎng)文本,需要在文本末尾附加Ll字符,除非將值分配給聲明為L(zhǎng)ong的變量。 

否則,推斷Int。

整數(shù)字符串的有效值受要為其分配值的變量的類型的限制。

下表定義了包含的限制。

目標(biāo)類型最低(含)最大(包括)
Long-263263
Int-231231 - 1
Short-215215
Char0216
Byte-2727 - 1

如果指定的整數(shù)常量數(shù)超出這些范圍,則會(huì)發(fā)生編譯時(shí)錯(cuò)誤。

浮點(diǎn)常量

浮點(diǎn)常量是帶有可選減號(hào),零個(gè)或多個(gè)數(shù)字,后跟句點(diǎn).,后跟一個(gè)或多個(gè)數(shù)字的表達(dá)式。

對(duì)于 Float 常量,在文字末尾附加Ff字符。否則,假定為Double。

我們可以選擇為D加上D d

浮點(diǎn)常量可以用或不用指數(shù)表示。

指數(shù)部分的格式為e或E,后跟可選的+或 - ,后跟一個(gè)或多個(gè)數(shù)字。

這里有一些浮點(diǎn)常量的例子。 Double被推斷除非聲明的變量是Float或使用f或F后綴:

     .14 
     3.14 
     3.14f 
     3.14F 
     3.14d 
     3.14D 
     3e5 
     3E5 
     3.14e+5 
     3.14e-5 
     3.14e-5 
     3.14e-5f 
     3.14e-5F 
     3.14e-5d 
     3.14e-5D 

布爾常量

布爾常量是truefalse

它們被分配到的變量的類型將被推斷為布爾值:

 
object Main {
  def main(args: Array[String]) {
     val b1 = true 
     val b2 = false 
     
     println(b1);
     println(b2);
  }    
}

字符常量

字符常量是可打印的Unicode字符或轉(zhuǎn)義序列,寫在單引號(hào)之間。

Unicode值介于0和255之間的字符可以由八進(jìn)制轉(zhuǎn)義表示,即反斜杠(\)后跟最多三個(gè)八進(jìn)制字符的序列。

這里有些例子:

"A" 
"\u0041"  // "A" in Unicode 
"\n" 
"\012"    // "\n" in octal 
"\t" 

有效的轉(zhuǎn)義序列如下表所示。

序列含義
\b退格(BS)
\t水平制表(HT)
\n換行(LT)
\f換頁(yè)(FF)
\r回車(CR)...
\"雙引號(hào)(“)
\"單引號(hào)(“)
\\反斜杠(\)

字符串常量

字符串常量是用雙引號(hào)或三重雙引號(hào)括起來(lái)的字符序列,即“”“...”“”。

對(duì)于雙引號(hào)中的字符串字符,允許的字符與字符常量相同。

要在字符串中包含雙引號(hào)字符,必須使用\ 字符“轉(zhuǎn)義"。

這里有些例子:

"This is a\ntest" 
"He said, \"SQL is for database!\"" 
"First\tSecond" 

由雙引號(hào)的三元組界定的字符串常量稱為多行字符串常量。

這些字符串可以覆蓋幾行。換行符將是字符串的一部分。它們可以包括任何字符,包括一個(gè)或兩個(gè)雙引號(hào)在一起,但不能三個(gè)在一起。

它們對(duì)于不具有有效Unicode或轉(zhuǎn)義序列的\字符的字符串非常有用。

這里有三個(gè)示例字符串:

"""This is a \ntest""" 
"""He said, "SQL is for database!" """ 
"""First line\n 
Second line\t 

Fourth line""" 

在代碼中使用多行字符串時(shí),要使用String.stripMargin縮進(jìn)子字符串以進(jìn)行正確的代碼格式化。

它刪除子字符串中的所有空格,直到并包括垂直條|的第一次出現(xiàn)。

要添加空格縮進(jìn),請(qǐng)將空格放在|后面。

考慮這個(gè)例子:

object Main {
  def main(args: Array[String]) {
     println(hello("This is a test") );
     
  }    
  def hello(name: String) = s"""Welcome! 
       Hello, $name! 
       * (Star!!) 
       |Hi. 
       |    whitespace.""" .stripMargin   
}

要使用不同于|的前導(dǎo)字符,請(qǐng)使用帶有Char(字符)參數(shù)的stripMargin的重載版本。

如果整個(gè)字符串都有要?jiǎng)h除的前綴或后綴,則有相應(yīng)的前綴和stripSuffix方法。

object Main {
  def main(args: Array[String]) {
     println(goodbye("o2fo.com"));
     
  }    
  def goodbye(name: String) = 
       s"""xxxGoodbye, ${name}yyy 
       xxxCome again!yyy""" .stripPrefix("xxx").stripSuffix("yyy") 
}

符號(hào)常量

Scala有符號(hào)類型,它們是內(nèi)部連接的字符串,意味著具有相同“名稱”的兩個(gè)符號(hào)實(shí)際上是指內(nèi)存中的同一個(gè)對(duì)象。

符號(hào)常量是單引號(hào)',后跟一個(gè)或多個(gè)數(shù)字,字母或下劃線(“_”),但第一個(gè)字符不能是數(shù)字。

函數(shù)常量

(i:Int,s:String)=> s + i 是Function2類型的函數(shù)文本[Int,String,String](返回String)。

你甚至可以使用常量語(yǔ)法作為類型聲明。

以下聲明是等效的:

val f1: (Int,String) => String       = (i, s) => s+i 
val f2: Function2[Int,String,String] = (i, s) => s+i 

元組常量

Scala庫(kù)包括用于將N個(gè)項(xiàng)分組的TupleN類(例如,Tuple2),以及括號(hào)內(nèi)的項(xiàng)的逗號(hào)分隔列表的文字語(yǔ)法。

對(duì)于1到22之間的N,有單獨(dú)的TupleN類。

例如,val tup =(“Hi”,2014)定義了一個(gè)Tuple2實(shí)例,其中第一個(gè)元素推斷String,第二個(gè)元素Int推斷。

Tuple實(shí)例是不可變的,第一類值,因此您可以將它們分配給變量,將它們作為值傳遞,并從方法中返回。

我們還可以使用常量語(yǔ)法為Tuple類型聲明:

val t1: (Int,String)       = (1, "two") 
val t2: Tuple2[Int,String] = (1, "two") 

以下示例演示使用元組:

object Main {
  def main(args: Array[String]) {
     val t = ("Hello", 1, 2.3)
     println( "Print the whole tuple: " + t )
     println( "Print the first item:  " + t._1 )
     println( "Print the second item: " + t._2 )
     println( "Print the third item:  " + t._3 )

     val (t1, t2, t3) = ("World",  "!", 0x22)
     println( t1 + ", " + t2 + ", " + t3 )

     val (t4, t5, t6) = Tuple3("World",  "!", 0x22)
     println( t4 + ", " + t5 + ", " + t6 )
  }
}

表達(dá)式t._n從元組t中檢索第n個(gè)項(xiàng),從一個(gè)開始,不是零,遵循歷史約定。

有幾種方法來(lái)定義兩元素元組,有時(shí)稱為一對(duì)。

我們可以在兩個(gè)值之間使用“箭頭運(yùn)算符”,以及在元組相關(guān)類上使用特殊的工廠方法:

(1, "one") 
1 -> "one" 
Tuple2(1, "one") 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)