Scala语法
常用语法:
package com.zscdminobject demo1 { def main(args: Array[String]): Unit = { val a = List(1, 2, 3) val b = a.reduceLeft(_ + _) val c = a.reduceLeft((x, y) => x + y) //等价于上面的写法 val d = a.foldRight(1)(_ * _) val e = a.foldLeft(0)(_ + _) println(b) println(c) println(d) println(e) val stream = 1 #:: 2 #:: 3 #:: Stream.empty println(stream(0)) //取第一个元素 println(stream.apply(0)) //取第一个元素,【def apply(n: Int): A 通过列表中的索引选择一个元素】 val l = 0 to 5 println(l.map(x => x * x).zip(10 to 15)) println(l.view.map(x => x * x).zip(10 to 15).force) //加上force强制求值,不加则暂时不求值 val days = Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") days.zipWithIndex.foreach { case (day, count) => println(s"$count is $day") } println("----------------") for ((day, count) <- days.zipWithIndex) { println(s"$count is $day") } println("----------------") for ((day, count) <- days.zip(Stream from 1)) { println(s"$count is $day") } val list1: List[Int] = List(1, 2, 3, 4) val list2: List[Int] = List(5, 6, 7, 8) val list3: List[Int] = List(2, 3, 4, 5, 6) val list4: List[Int] = List(7, 8, 9, 0, 3) var zip = list1.zip(list2) var zipAll = list1.zipAll(list2, "-2", "-1") //若列表长度不一致,对方列表较短的话使用thatElem进行填充 var zipAll1 = list2.zipAll(list1, "-2", "-1") //若列表长度不一致,自身列表比较短的话使用thisElem进行填充 println(zip) //zip函数将传进来的两个参数中相应位置上的元素组成一个pair数组。如果其中一个参数元素比较长,那么多余的参数会被删掉 println(zipAll) println(zipAll1) //zipWithIndex函数可以将元素和其所在的下表组成一个pair var zipWithIndex = list1.zipWithIndex println(zipWithIndex) //unzip函数拆分元祖为List println(zip.unzip) var sort = List(10, 5, 8, 1, 7).sortWith(_ > _) println(sort) def sum(args: Int*) = { var result = 0 for (arg <- args) result += arg result } println(sum(1 to 5: _*)) val arr = Array(1, 2, 3, 4, 5) val Array(1, 2, _*) = arr val Array(first, second, _*) = arr println(first) println(second) val fun = 3 * (_: Double) println(fun(2)) println(a.reduce(_ + _)) println(a.map(_ + 2)) }}