大数据进阶之路——Scala 高级函数

2021年11月25日 阅读数:3
这篇文章主要向大家介绍大数据进阶之路——Scala 高级函数,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


文章目录



高级函数

字符串

  • 插值
  val s ="hello"
val name="jacksun"
println(s+name)
println(s+":"+name)

println(s"hello:$name")

  • 多行字符串
  //多行
var d =
"""
|1
|2
|3
|4
|5
|5
|6
""".stripMargin

匿名函数

匿名函数分为有参匿名函数、无参匿名函数、有返回值的匿名函数。(能够将匿名参数的返回给一个val声明的值,匿名函数不能显式的声明返回值)es6

package org.example

object FunctionApp extends App {

//有参数匿名函数
val printy = (a : Int) => {
println(a)
}
printy(999)

//无参数匿名函数
val printx = ()=>{
println("Scala No.1")
}
printx()

//有返回值的匿名函数
val add = (a:Int,b:Int) =>{
a+b
}
println(add(4,4))

}


Currying

将接受一个参数的转化成2个app

def add(a:Int,b:Int) = a+b
println(add(2,1))
//Currying
def add2(a:Int)(b:Int) = a+b
println(add2(2)(1))

高阶函数

高阶函数(Higher-Order Function)就是操做其余函数的函数。ide

Scala 中容许使用高阶函数, 高阶函数能够使用其余函数做为参数,或者使用函数做为输出结果。函数

object Test {
def main(args: Array[String]) {

println( apply( layout, 10) )

}
// 函数 f 和 值 v 做为参数,而函数 f 又调用了参数 v
def apply(f: Int => String, v: Int) = f(v)

def layout[A](x: A) = "[" + x.toString() + "]"

}


  • map

对每一个集合的元组进行操做es5


scala> val l =List(1,2,3,4,5,6,7,8,9)
l: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

scala> l.map(x=>(x+1))
res5: List[Int] = List(2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> l.map((x:Int)=>x*2)
res6: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18)

scala> l.map(x=>x*2)
res7: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18)

scala> l.map(_*2)


  • filter
    过滤条件
scala> l.filter(_>5)
res9: List[Int] = List(6, 7, 8, 9)

  • take
    取数
scala> l.take(1)
res10: List[Int] = List(1)

scala> l.take(3)
res11: List[Int] = List(1, 2, 3)

  • reduce
    两两相加相减
scala> l.take(3).reduce(_-_)
res15: Int = -4
// 从左相减
scala> l.take(3).reduceLeft(_-_)
res16: Int = -4
// 从右相减
scala> l.take(3).reduceRight(_-_)
res17: Int = 2