String高级操作:
- 插值:在双引号的前面写上s,在字符串内部的变量名前加上美元符号($)
- 多行字符串:连按三次shift 加双引号
// 插值
val name = "张三"
println(s"hello:$name")
// 多行字符
val team = "AC Milan"
val b =
s"""
|这是一个多行字符
|hello,
|$team
""".stripMargin
println(b)
匿名函数:
- 函数可以命名,也可以不命名。
- 匿名函数可以传给一个变量,也可以传给一个函数。
- 匿名函数的使用: map(x=>x+1)
// 匿名函数
(x: Int) => x + 1
// 匿名函数传给变量
val m = (x: Int) => x + 1
print(m(1))
// 匿名函数传给函数
def add = (x: Int) => x + 1
println(add(10))
柯里化(currying):
将原来接受两个参数的一个函数,转换为两个
def sum(a:Int,b:Int) = a+b
println(sum(2,3))
def sum2(a:Int)(b:Int) = a+b
println(sum2(2)(3))
高阶函数:
- map:逐个区操作集合中的每个元素
- foreach:遍历
- filter:过滤
- take:取前集合
- reduce:两两计算
- reduceLeft:
- reduceRight:
- fold:
- flatten:压扁所有元素
- flatmap:压扁操作
// scala 计算wordcount
val txt = scala.io.Source.fromFile("/a.txt").mkString
val txts = List(txt)
txts.flatMap(_.split(",")).map((_,1)).groupBy(_._1).mapValues(_.size)