文章出處
文章列表
package yjmyzz import scala.io.StdIn object ScalaApp { def main(args: Array[String]) { println("please input something,press Enter to exit:") //每一行最后加不加分號都可以 readKeyboard //注:無參數的函數調用,加不加括號都行 println(add(1, 2) + "\n------\n") println(div(1, 2) + "\n------\n") println(div(1, 0) + "\n------\n") println("5!=" + factorial(5) + "\n------\n") println("-1!=" + factorial2(-1) + "\n------\n") println("5!=" + factorial2(5) + "\n------\n") } /** * 鍵盤讀取示例(無返回值) */ def readKeyboard() { //注:無返回值,即相當于返回值為Unit,所以上面的方法聲明也可以寫成 // def readKeyboard(): Unit = { var line = StdIn.readLine() while (line != "") { println("you just input the : " + line) line = StdIn.readLine() } println("bye\n") } /** * 整數加法(帶返回值示例) * @param x * @param y * @return */ def add(x: Integer, y: Integer): Integer = { print(x + " + " + y + " = ") x + y //返回值,連return都不用加,十分簡潔 } /** * 異常處理示例 */ def div(x: Long, y: Long): Double = { var hasError = false try { if (y.equals(0L)) throw new RuntimeException("divide by zero") else x.toDouble / y } catch { case e: Exception => { hasError = true println("error:" + e.getMessage()) Double.MinValue } } finally { if (hasError) println("finished , but there has a error") else println("finished") } } /** * 遞歸示例 * @param x * @return */ def factorial(x: Integer): Long = { if (x.equals(0)) 1 else x * factorial(x - 1) } /** * 演示for循環 * @param x * @return */ def factorial2(x: Integer): Long = { if (x <= 0) return 1 //注:加return后,下面的代碼就不執行了 println("test") var temp = 1L for (i <- 1 to x) { temp = temp * i } temp } }
從語法風格上看,確實比java簡潔無數,有那么一丁點javascript的味道。
函數定義,除了用正式的def來定義外,還可以"匿名"定義,比如下面這樣:
var add = (a: Integer, b: Integer) => a + b //是不是有點c#中匿名方法和lambda的味道了:) println(add(1, 2))
對于無參函數,可以做為另一個函數的參數
def oneFunc = { println("one func") } /** * 無參函數,可以直接作為另一個函數的參數(有點象c#中的委托) * @param a */ def twoFunc(a: Unit) = { a println("two func") } //調用示例 twoFunc(oneFunc)
for循環還可以寫得更強大:
def forDemo = { for (x <- 1 to 2; y <- 3 to 4) println("x=" + x + ",y=" + y) println //上面的寫法,等效于下面的寫法 for (x <- 1 to 2) for (y <- 3 to 4) println("x=" + x + ",y=" + y) println //帶條件的for循環(打印10以內的偶數) for (i <- 1 to 10; if i % 2 == 0) println(i) }
文章列表
全站熱搜