scala> def max(a: Int, b: Int) = if(a > b) a else b
max: (a: Int,b: Int)Int
scala> max(5, 4)
res8: Int = 5
scala> max(5, 7)
res9: Int = 7
if else
val someValue = if(some condition) value1 else value2
scala> val useDefault = false
useDefault: Boolean = false
scala> val configFile = if(useDefault) "custom.txt" else "default.txt"
configFile: java.lang.String = default.txt
for
val files = new java.io.File(".").listFiles
for(file <- files) { //for(File file: files) {
val filename = file.getName
if(fileName.endsWith(".scala")) println(file)
}
for(
file <- files;
fileName = file.getName;
if(fileName.endsWith(".scala"))
) println(file)
scala> val aList = List(1, 2, 3)
aList: List[Int] = List(1, 2, 3)
scala> val bList = List(4, 5, 6)
bList: List[Int] = List(4, 5, 6)
scala> for { a <- aList; b <- bList } println(a + b)
5
6
7
6
7
8
7
8
9
scala> for { a <- aList; b <- bList } yield a + b
res27: List[Int] = List(5, 6, 7, 6, 7, 8, 7, 8, 9)
Pattern match
ordinal(args(0).toInt)
def ordinal(number:Int) = number match {
case 1 => println("1st")
case 2 => println("2nd")
case 3 => println("3rd")
case 4 => println("4th")
case 5 => println("5th")
case 6 => println("6th")
case 7 => println("7th")
case 8 => println("8th")
case 9 => println("9th")
case 10 => println("10th")
case _ => println("Cannot do beyond 10")
}
scala> 2 match { case 1 => "One" }
scala.MatchError: 2
at .<init>(<console>:5)
at .<clinit>(<console>)
...
def rangeMatcher(num:Int) = num match {
case within10 if within10 <= 10 => println("with in 0 to 10")
case within100 if within100 <= 100 => println("with in 11 to 100")
case beyond100 if beyond100 < Integer.MAX_VALUE => println("beyond 100")
}