Literales de Scala

En Scala, los literales son expresiones que representan directamente valores fijos.

Scala admite varios tipos de literales, que incluyen valores numéricos, caracteres, cadenas, booleanos, etc.

Literales enteros

Los literales enteros se utilizan para el tipo Int. Si se representa un Long, se puede agregar una L o una l minúscula como sufijo después del número.

Los literales enteros pueden ser decimales, hexadecimales y octales.

  • Decimal:42, 0, -99
  • Hexadecimal: con0xo0Xcomo prefijo, por ejemplo0x2A, 0x0, 0XFF
  • Octal: antes de Scala 2.10 se admitían literales octales, con0como prefijo, pero en Scala 2.10 y versiones posteriores, los literales octales fueron eliminados.
val decimal = 42
val hex = 0x2A

Literales de punto flotante

Si un número de punto flotante tiene el sufijo f o F, indica que es de tipo Float; de lo contrario, es de tipo Double.

  • Doble precisión:3.14, -0.001, 1.0e-10
  • Precisión simple:3.14f, -0.001F
val doubleValue = 3.14
val floatValue = 3.14f

Literales booleanos

Los literales booleanos son true y false.

val isScalaFun = true
val isSkyGreen = false

Literales de símbolo

Los literales de símbolo se escriben como:'<identificador>, aquí<identificador>puede ser cualquier identificador de letras o números (nota: no puede comenzar con un número). Este literal se asigna a una instancia de la clase predefinida scala.Symbol.

Por ejemplo: el literal de símbolo'xes una abreviaturascala.Symbol("x")de la expresión; el literal de símbolo se define de la siguiente manera:

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

Literales de carácter

En Scala, las variables de carácter se definen con comillas simples'de la siguiente manera:

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

Donde\representa un carácter de escape, al que le puede seguiru0041un dígito o\r\netc., caracteres de escape fijos.

Literales de cadena

En Scala, los literales de cadena se definen con comillas dobles"de la siguiente manera:

"Hello,\nWorld!"
"Ejemplo官网:www.example.com"
  • Cadena normal:"Hello, World!"
  • Cadena multilínea: se utilizan comillas triples"""para encerrarla; puede contener saltos de línea y comillas.

Representación de cadenas multilínea

Las cadenas multilínea utilizan tres comillas dobles como delimitador, con el formato:""" ... """。

Ejemplo:

val foo = """Ejemplo
www.example.com
www.runnoob.com
以上三个地址都能访问"""

Valor null

null es un literal especial que representa el valor nulo de todos los tipos de referencia.

El valor nulo es del tipo scala.Null.

scala.Null y scala.Nothing son tipos especiales que manejan de manera uniforme ciertos "casos límite" del sistema de tipos orientado a objetos de Scala.

La clase Null es el tipo del objeto de referencia null; es una subclase de cada clase de referencia (clases que heredan de AnyRef). Null no es compatible con los tipos de valor.

val nullValue: String = null

Unit

El tipo Unit tiene un único valor de instancia, representado por el literal()que es similar a void en Java.

val unitValue: Unit = ()

Ejemplo

El siguiente es un ejemplo de código que usa diferentes tipos de literales:

Ejemplo

object LiteralsExample {
  def main(args: Array[String]): Unit = {
    // Literales numéricos
    val decimal = 42
    val hex = 0x2A
    val doubleValue = 3.14
    val floatValue = 3.14f
   
    // Literales de carácter
    val charA = 'A'
    val charNewLine = '\n'
   
    // Literales de cadena
    val greeting = "Hello, World!"
    val multilineString = """This is
                            |a multi-line
                            |string"
"".stripMargin
   
    // Literales booleanos
    val isScalaFun = true
    val isSkyGreen = false
   
    // Literales especiales
    val nullValue: String = null
    val unitValue: Unit = ()
   
    // Ejemplo de salida
    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")
  }
}

El resultado de compilar y ejecutar el código anterior es:

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: ()
Otras extensiones