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 = ()
例
以下は、さまざまな種類のリテラルを使用したサンプルコードです:
例
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: ()その他の拡張