Scala リテラル

Scala では、リテラル(Literals)は固定値を直接表す式です。

Scala は数値、文字、文字列、ブール値など、さまざまな種類のリテラルをサポートしています。

整数リテラル

整数リテラルは Int 型に使用されます。Long を表す場合、数字の後に L または小文字の l を接尾辞として追加できます。

整数リテラルは、10進数、16進数、8進数で表現できます。

  • 10進数:42, 0, -99
  • 16進数:接頭辞0x或0Xで始まり、例えば0x2A, 0x0, 0XFF
  • 8進数:Scala 2.10より前は8進数リテラルをサポートしており、接頭辞0で始まりますが、Scala 2.10以降では8進数リテラルは削除されました。
val decimal = 42
val hex = 0x2A

浮動小数点リテラル

浮動小数点数の後に f または F の接尾辞がある場合、それは Float 型を表し、それ以外の場合は Double 型です。

  • 倍精度:3.14, -0.001, 1.0e-10
  • 単精度:3.14f, -0.001F
val doubleValue = 3.14
val floatValue = 3.14f

ブールリテラル

ブールリテラルには true と false があります。

val isScalaFun = true
val isSkyGreen = false

シンボルリテラル

シンボルリテラルは次のように記述されます:'<識別子>、ここで<識別子>任意の英数字の識別子(注:数字で始めることはできません)にすることができます。このリテラルは、事前定義されたクラス scala.Symbol のインスタンスにマッピングされます。

例:シンボルリテラル'xは式scala.Symbol("x")の短縮形であり、シンボルリテラルは次のように定義されます:

package scala
final case class Symbol private (name: String) {
   override def toString: String = "'" + name
}

文字リテラル

Scala の文字変数は単一引用符'で定義します。例:

'a' 
'\u0041'
'\n'
'\t'

ここで\はエスケープ文字を表し、その後に続けることができますu0041数字または\r\nなどの固定エスケープ文字です。

文字列リテラル

Scala では文字列リテラルは二重引用符"で定義します。例:

"Hello,\nWorld!"
"サンプル官网:www.example.com"
  • 通常の文字列:"Hello, World!"
  • 複数行文字列:三重引用符"""で囲み、改行や引用符を含めることができます。

複数行文字列の表現方法

複数行文字列は3つの二重引用符で区切りを表します。形式は次のとおりです:""" ... """。

例は次のとおりです:

val foo = """サンプル
www.example.com
www.runnoob.com
以上三个地址都能访问"""

Null 値

Null は特別なリテラルであり、すべての参照型の null 値を表します。

null 値は scala.Null 型です。

Scala.Null と scala.Nothing は、Scala のオブジェクト指向型システムの特定の「境界条件」を統一的な方法で処理する特別な型です。

Null クラスは null 参照オブジェクトの型であり、すべての参照クラス(AnyRef を継承したクラス)のサブクラスです。Null は値型と互換性がありません。

val nullValue: String = null

Unit

Unit 型にはインスタンス値が1つだけあり、リテラル()で表します。これは Java の void に似ています。

val unitValue: Unit = ()

例

以下は、さまざまな種類のリテラルを使用したサンプルコードです:

例

object LiteralsExample {
  def main(args: Array[String]): Unit = {
    // 数値リテラル
    val decimal = 42
    val hex = 0x2A
    val doubleValue = 3.14
    val floatValue = 3.14f
   
    // 文字リテラル
    val charA = 'A'
    val charNewLine = '\n'
   
    // 文字列リテラル
    val greeting = "Hello, World!"
    val multilineString = """This is
                            |a multi-line
                            |string"
"".stripMargin
   
    // ブールリテラル
    val isScalaFun = true
    val isSkyGreen = false
   
    // 特別なリテラル
    val nullValue: String = null
    val unitValue: Unit = ()
   
    // 出力例
    println(s"Decimal: $decimal, Hex: $hex")
    println(s"Double: $doubleValue, Float: $floatValue")
    println(s"Char: $charA, New Line: $charNewLine")
    println(s"Greeting: $greeting")
    println(s"Multiline String: $multilineString")
    println(s"Is Scala Fun: $isScalaFun, Is Sky Green: $isSkyGreen")
    println(s"Null Value: $nullValue, Unit Value: $unitValue")
  }
}

上記のコードをコンパイルして実行した結果は次のとおりです:

Decimal: 42, Hex: 42
Double: 3.14, Float: 3.14
Char: A, New Line: 

Greeting: Hello, World!
Multiline String: This is
a multi-line
string
Is Scala Fun: true, Is Sky Green: false
Null Value: null, Unit Value: ()
その他の拡張