typestar

if como expresión en Scala

En Scala if/else evalúa a un valor, así que se puede asignar directo a un val.

val elevationGain = 820

// if/else is an expression, so it can be assigned to a val.
val grade =
  if elevationGain < 300 then "easy"
  else if elevationGain < 900 then "moderate"
  else "strenuous"

// Both branches must agree on a type; here both are Int.
def restStops(gain: Int): Int =
  if gain > 600 then 2 else 1

// Scala has no ternary operator because if already gives a value.
def waterLiters(hikers: Int, hot: Boolean): Double =
  val perPerson = if hot then 2.0 else 1.25
  hikers * perPerson

def hikePlan(): Unit =
  println(s"$grade, ${restStops(elevationGain)} rest stops")
  println(waterLiters(4, hot = true))

Cómo funciona

  1. val grade = toma el resultado de la escalera if elevationGain < 300 then "easy" que cierra en else "strenuous".
  2. def restStops(gain: Int): Int devuelve un if gain > 600 then 2 else 1 de una línea, con ambas ramas Int.
  3. En waterLiters, el local val perPerson = if hot then 2.0 else 1.25 muestra por qué Scala no necesita ternario.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
613
Tokens
102
Ritmo de tres estrellas
80 tpm

Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 76 segundos.

Escribe este fragmento

Paso 1 de 3 en Expresiones; paso 4 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →