scala函数:
1.正常函数
def normalReturn(x:Int,y:Int):Double ={ return x*y*0.1; }
2.没有返回值,不要等号,或是返回值为Unit
def noRetrun():Unit = { println("1000") } def noRetrun2(x:Any) { println("no return") return x }
3 映射式定义 从int到double
def f:Int=>Double = { case 1 => 0.1 case 2 => 0.2 case _ => 0.0 }
4.映射式定义 返回对象
def f2:Option[User]=>User={ case Some(x) => x case None => new User(1) }
5.映射式定义 多对一
def mm:(Int,Int)=>Int = _+_; def mm2:Int=>Int = 30+_
6.缺省函数
def join(a:List[String], s:String="-") = { a.mkString(s) }
7.变长参数 相当于java的...
def sum22(ns: Int*) = { var s = 0 for (n<-ns) s += n s }
从左到右相减
def sum33(ns:Int*) = ns.reduceLeft(_-_)
8.函数参数
def somefunc(fuc:ClassDemo=>Boolean):Int={ val funcre = fuc(new ClassDemo("zk","demo")) val result = if(funcre) 1 else 0 result }
//函数参数,_是映射左边的参数,那个classDemo对象 val r = somefunc ( _.getHost() > 10 ) println(r)
9.slide写法,参数T
def mylock[T](str:String)(func: => T):T={ println(str) func }
val r2=mylock("lock"){ println("do some") 1 }
10.implicit函数,将引用本方法的类的String参数转为Long,(这里是为了科学计数法转换)
implicit def typeConvertor(input:String):Long={ var bd = BigDecimal(input) bd.toLongExact }
11.函数变量
var m = (x:Int,y:Int)=>x*y;
12.匿名函数
//匿名函数(直接一个映射加上括号里的参数) println(((i:Int)=> i*i)(3)) println(((j:Int,i:Double)=> i*j)(10,0.1))
13.偏函数 _ 用下划线代替1+个参数的函数
val p0 = sum _ // 正确 // val p1 = sum(10,_,20) // 错误 val p2 = sum(10,_:Int,_:Int) // 正确 val p3 = sum(_:Int,100,_:Int) println(p0(1,2,3)) // 6 println(p2(10,20)) // 130 println(p3(10,1)) // 111 println(((i:Int, j:Int) => i+j)(3, 4)) println(((_:Int) + (_:Int))(3,4) )
再加几个例子
函数参数
def ffparam(x:Int, y:Int, m:(Int, Int)=>Int):Int={ val x1 = x*10; val y1 = y*10; return m(x1,y1) }
函数式,比较简单难懂
val f1 = (n:Int) => 1 to 3 map (_*n) mkString " "; println(1 to 3 map f1 mkString "\n") //用f函数也可以,用f1也可以
再来个Curry化
println(sum(1)(3)) def sum(a:Int)(b:Int) = { a + b } // sum(1)(2) = 3
相关推荐
《Scala函数式编程》是针对希望学习FP并将它应用于日常编码中的程序员而写的,内容包括:函数式编程的概念;函数式编程相关的各种“为什么”和“怎么做”;如何编写多核程序;练习和检测。 从OOP到FP,思路的转化 ...
函数式编程(FP)是一种...《Scala函数式编程》是针对希望学习FP并将它应用于日常编码中的程序员而写的,内容包括:函数式编程的概念;函数式编程相关的各种“为什么”和“怎么做”;如何编写多核程序;练习和检测。
英文原版 scala函数式编程 function programming in scala
目前很多大数据组件都是用scala开发,包括Spark, Kafka, Flink,scala的函数式编程思想能够带来比java更高的效率,同时其可读性及难度升高,文档由浅入深介绍Scala的语法、特性等;
Scala函数式编
Scala 函数嵌套我们可以在 Scala 函数内定义函数,定义在函数内的函数称之为局部函数。
Scala函数式编程 2016年4月版 中文 Scala函数式编程 2016年4月版 中文
Scala函数和闭包
scala函数式编程-scalaz reader-monad state-monad functor applicative functor
25 scala函数式编程.7z
主要介绍了scala集合和函数的的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
非常适合喜爱Scala编程的小伙伴学习,高清版,带完整版书签。
Spark RDD 算子说明,分别讲述了Transformation和Action这两类的算子。
2.2 细节对应的案例//0. 函数的标准写法//至简原则: 能省则省//1. return 可以省略,scala 会使用函数体最后一行代码作为返回值//2.
快学Scala课后习题答案,包含各个章节答案word版和pdf版
主要介绍了深入理解Scala函数式编程过程的相关资料,希望通过本文能帮助到大家,让大家学习理解这部分内容,需要的朋友可以参考下
主要介绍了Scala函数式编程的的相关资料,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
Coursera 在 Scala 中的函数式编程原则 洛桑联邦理工学院 Martin Odersky 的 Coursera Scala 函数式编程课程的作业和提交 第 0 周:00.example 本次作业的目标是让您熟悉本课程所需的基础设施和工具。 即使此作业的...