您的位置:首页 > 编程语言

day3Scala函数式编程

2016-01-31 23:43 204 查看
匿名函数:函数没有名称

参数名称 :类型 => 指向的函数实现体本身

scala> val  fun2 = (content: String)  => println(content)

fun2: String => Unit = <function1>

scala> fun2("hellon spark")

hellon spark

高阶函数:函数的参数也是函数

scala> def bd(func: (String) => Unit, conte: String) {func(conte)}

bd: (func: String => Unit, conte: String)Unit

scala> val sc = (conte: String) => println(conte)

sc: String => Unit = <function1>

scala> bd(sc,"hell spark")

hell spark

           函数出入类型 指向函数体的返回结果类型

def b1(fun1:(String)=> Unit, )

在函数的参数作用的函数体中,

只使用一次这个参数的具体值的话,我们可以将这个参数的具体名称省略掉用下划线代替

闭包:函数的变量超出有效作用域还能被函数使用

函数执行完后内部变量依旧可以被外部访问

scala> def sc1(content: String) =(message: String) =>println(content +"..."+ message)

sc1: (content: String)String => Unit

scala> val funrest = sc1("spark")

funrest: String => Unit = <function1>

scala> funrest("Filek")

spark...Filek

scala>

柯里化:函数有2个不同参数可以转换成2个函数

在函数的调用过程通过柯里化

scala>  def sum(x: Int, y: Int) = x + y

sum: (x: Int, y: Int)Int

scala> sum(2,4)

res9: Int = 6

scala> def sum_rry(x: Int) = (y: Int)  => x + y

sum_rry: (x: Int)Int => Int

scala> sum_rry(1)(8)

res10: Int = 9

scala> def sum1(x: Int) (y: Int) = x + y

sum1: (x: Int)(y: Int)Int       

scala> sum1(1)(99)

res11: Int = 100
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: