麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

scala 學習筆記(01) 函數定義、分支、循環、異常處理、遞歸

2019-11-11 05:25:23
字體:
來源:轉載
供稿:網友

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(12) + "/n------/n")    println(div(12) + "/n------/n")    println(div(10) + "/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 <= 0return 1 //注:加return后,下面的代碼就不執行了    println("test")    var temp = 1L    for (i <- 1 to x) {      temp = temp * i    }    temp  } }

從語法風格上看,確實比java簡潔無數,有那么一丁點javascript的味道。

函數定義,除了用正式的def來定義外,還可以"匿名"定義,比如下面這樣:

12var add = (a: Integer, b: Integer) => a + b //是不是有點c#中匿名方法和lambda的味道了:)println(add(12))

 對于無參函數,可以做為另一個函數的參數

123456789101112131415def oneFunc = {  println("one func")} /** * 無參函數,可以直接作為另一個函數的參數(有點象c#中的委托) * @param a */def twoFunc(a: Unit) = {  a  println("two func")} //調用示例twoFunc(oneFunc)

for循環還可以寫得更強大:

1234567891011121314def 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 10if % 2 == 0) println(i)}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人羞羞国产免费游戏 | 欧美a视频在线观看 | 成人在线免费视频观看 | www.国产.com| 在线观看中文字幕av | 羞羞的视频在线观看 | 日本羞羞的午夜电视剧 | 蜜桃视频在线观看视频 | xxxx hd videos| 欧美精品一区二区三区在线播放 | 特级无码毛片免费视频尤物 | 国产精品一区二av18款 | 国产精品麻豆一区二区三区 | 一级做a爱片毛片免费 | 在线视频观看一区二区 | 色99久久 | 日韩视频一区二区三区四区 | 蜜桃免费在线 | 久久久久免费精品国产小说色大师 | 欧美日韩在线免费观看 | 成人毛片在线免费看 | 日韩精品中文字幕一区二区三区 | 国产精品久久亚洲 | 色综合视频 | 免费观看黄色影片 | 综合毛片 | 日本成年免费网站 | 视频一区免费观看 | 久久亚洲一区二区三区成人国产 | 午夜视频亚洲 | 免费香蕉成视频成人网 | 久久久久国产成人免费精品免费 | 国产精品久久久久久久久粉嫩 | 日本特级a一片免费观看 | 亚洲精久 | 精品国产一区在线 | 久久羞羞视频 | 日本在线不卡一区二区三区 | 久久精品操 | 亚洲精品一区国产精品丝瓜 | 国产精品999在线 |