门清
Scala高阶函数,函数是Scala中最重要的重点
把函数体看成变量
工厂方法 工厂变量 简单工厂
object MyhHello {
//高阶函数最简单的工厂模式
var humber = ()=>{
//可以连接数据库,HBase,masql等等
"我是汉堡包"
}
var checken = ()=> "我是鸡翅膀"
def kgc(foodname:String):()=>String = foodname match {
case "humber" => humber
case "cheken" => checken
case _=> null
}
def main(args: Array[String]): Unit = {
println(kgc("cheken")())
}
}
用高阶函数解决问题
为什么用设计模式–高内聚,低耦合,提高程序的健壮性,—2,3个模式最优的方法。
接口下面是具体的类,了多个类聚合在一起就合成了接口。(预埋接口,使用接口)好的设计模式会很优美。用工厂模式限制接口类型。
离散数学,
二维数组压平就变成了一维数组(变形的测试图)
reduce函数:两两相加,
Java方法重载 名字一样,参数类型不一样,方法名不能一样。 《柯里化 》
scala:Array(集合,序列)
Scala高阶函数数组中 左子树,右子树奇数个 完整二叉树偶数 底层都是二叉树,
秒懂)图解scala的foldleft和foldright
foldLeft:
比如
List(1,7,2,9).foldLeft(0)(-)
其中0是初始值
一般情况下对于foldLeft可以这么解决:0-1-7-2-9 = -19
还可以画一个图(别吐槽):
本栗子的操作就是_-_,也就是各元素相减,所以我们从底端开始就得到(((0-1)-7)-2)-9= -19
foldRight
骚微变一下初值
List(1,7,2,9).foldRight(7)(-)
这个就比foldLeft复杂一点了,萌新就不能一眼看出结果了,那么我们可以一样的画个图(好累):
这个的话就要从下面看了,
先是(9-7)
然后 2 -(9-7)
然后7-(2-(9-7))以此类推得到
1-(7-(2-(9-7))) = -6
其他的情况也可以以此类推
对就是这样,同学们理解了吗
上面的函数比较丰富:
scala> val fun1:PartizlFunction[Any,Int]={case i:Int=>i*2}
scala> arr1
:Array[Any] = Array(1,2,3,6,abc)
scala> arr1.collect(fun1)
:Array[Int] = Array(2,4,6,12)
arr.collect()表示偏函数里面的过滤你想要的数据
柯里化,左子树,右子树,Hash分区等对应的函数
样例类,
流处理,批处理。
???????????
偏函数:对部分函数进行处理,附楼木配置文件怎么贴,卡夫卡是什么?Java多线程,上锁死锁,Java虚拟机怎么弄。java写设计模式,Scala写设计模式,简单工厂,单例模式,
9.25///偏函数:
类(class)
搜搜移动大厅练习,通过class关键字定义默认成员类为public,也支持private,protected
java 类,伴生类与伴生对象(动态/静态相互转换)
一个类里面既要成员方法又要静态方法,则使用样例类 ,伴生对象与伴生类
在Scala中有两