http://www.cnblogs.com/yjmyzz/p/4694800.html
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!=" + factorial 2 (- 1 ) + "/n------/n" ) println( "5!=" + factorial 2 ( 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( 0 L)) 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 factorial 2 (x : Integer) : Long = { if (x < = 0 ) return 1 //注:加return后,下面的代碼就不執行了 println( "test" ) var temp = 1 L for (i <- 1 to x) { temp = temp * i } temp } } |
從語法風格上看,確實比java簡潔無數,有那么一丁點javascript的味道。
函數定義,除了用正式的def來定義外,還可以"匿名"定義,比如下面這樣:
12 | var add = (a : Integer, b : Integer) = > a + b //是不是有點c#中匿名方法和lambda的味道了:) println(add( 1 , 2 )) |
對于無參函數,可以做為另一個函數的參數
123456789101112131415 | def oneFunc = { println( "one func" ) } /** * 無參函數,可以直接作為另一個函數的參數(有點象c#中的委托) * @param a */ def twoFunc(a : Unit) = { a println( "two func" ) } //調用示例 twoFunc(oneFunc) |
for循環還可以寫得更強大:
1234567891011121314 | 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) } |
新聞熱點
疑難解答