Scala 方法定義及控制語法

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")
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章