Sök…


Grundläggande om uttryck

I Scala (i motsats till Java och de flesta andra språk), if är ett uttryck istället för ett uttalande . Oavsett är syntaxen identisk:

if(x < 1984) {
   println("Good times")
} else if(x == 1984) {
   println("The Orwellian Future begins")
} else {
   println("Poor guy...")
}

Innebörden av if att vara ett uttryck är att du kan tilldela resultatet av evalation av uttrycket till en variabel:

val result = if(x > 0) "Greater than 0" else "Less than or equals 0"
\\ result: String = Greater than 0

Ovan ser vi att if uttrycket utvärderas och result ställs in på det resulterande värdet.

Returtypen för ett if uttryck är supertypen för alla logikgrenar. Detta innebär att för detta exempel är returtypen en String . Eftersom inte alla if uttryck returnerar ett värde (som ett if uttalande som inte har någon else grenlogik), är det möjligt att returtypen är Any :

val result = if(x > 0) "Greater than 0"
// result: Any = Greater than 0

Om inget värde kan returneras (till exempel om endast biverkningar som println används i de logiska grenarna) kommer returtypen att vara Unit :

val result = if(x > 0) println("Greater than 0")
// result: Unit = ()

if uttryck i Scala liknar hur den ternära operatören i Java fungerar. På grund av denna likhet finns det ingen sådan operatör i Scala: det skulle vara överflödigt.

Lockiga hängslen kan utelämnas i ett if uttryck om innehållet är en enda rad.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow