scala-for的基本應用
阿新 • • 發佈:2018-12-17
scala-for的應用:
直接上程式碼。
def testfor01: Unit ={ val nieces = List("emily", "hananh", "mercedes", "porsche") /* 關鍵字yield:for迴圈中的yield會把當前的元素記錄下來, 儲存到集合中,迴圈結束後將返回該集合。 scala中for迴圈是有返回值的,如果被迴圈的是Map,則返回的就是Map, 如果被迴圈的是List,則返回的是List,以此類推 scala遍歷集合的方式較多:for迴圈、foreach迴圈、while迴圈、map對映、flatmap等 使用to或until進行for迴圈時,to與until區別: to:包含上下限,是閉區間 until:不包含上下限,是開區間 */ for (n <- nieces) yield println(n.capitalize) /* for (n <- nieces)這種for推導式中,失敗的匹配則會被安靜的忽略 */ nieces.foreach(nie => println(nieces.mkString)) //2、for迴圈可作為計時器 println("------for as a timer------") val a = Array("apple", "banana", "orange") a.foreach(println) for (i <- 0 until a.length if i != 1) println(s"$i is ${a(i)}") //3、衛語句(for迴圈中if判斷),此處to 與until的功能一樣 //衛語句通常作為篩選集合,根據具體要求,可使用集合中的filter、take、drop等方法替代for迴圈 println("------ 在for迴圈中有if語句巢狀 ------") for (x <- 0 to 5 if x != 3) println(x) //在for迴圈中巢狀if語句,可以同時巢狀多個if語句 for (wei_x <- 0 to 5 if wei_x % 2 == 0 if wei_x == 2) println(wei_x) System.out.println("------ 遍歷Map集合 ------") //遍歷Map集合 val names = Map("fname" -> "Robert", "lname" -> "Goren") for ((k, v) <- names) println(s"key: $k, value: $v") }
def testfor02: Unit ={ val nieces = List("emily", "hananh", "mercedes", "porsche") //for推導:通過for-yield的應用for迴圈是有返回值的。 val str01: List[String] = for (n <- nieces if !n.contains("emily")) yield n+" ... dd" str01.foreach(println) //for推導:在yield中有多行程式碼時,使用在yield中使用程式碼塊 val str02 = for (n <- nieces if ! n.contains("emily")) yield { val str = n+" ... dd" str } str02.foreach(println) }
scala-for應用過程中注意for內的迴圈是開區間還是閉區間,若使用for-yield守衛,要注意yield的返回物件。