Scala之函数

2018-12-08  本文已影响0人  马惠良

Scala是一门计算机编程语言,一种类似java的编程语言,集成了面向对象编程和函数式编程的特性。

这门语言有什么用?Spark就是基于Scala开发的,而Spark是大数据开发方面使用的非常频繁。而且优点非常多,是现在非常主流的开发工具。可以这么说,少了Spark,大数据的大河江山就少了一半。

首先什么是函数,这里函数的意思和数学上函数的意思是一样的。

          f(x)=ax+b

这里输入一个x,得到结果ax+b。这是最简单的函数,把ax+b当成Y,则

          f(X)->Y,也记住f:X->Y

在Scala中也是一样的,函数就是这种形式。

Scala是函数式编程,那么函数对于Scala就非常的重要。函数可以非常五个等级

第一等级:最普通的函数,表现形式还是数学上的函数形式:

          f:X=>Y

第二等级:把函数包装起来,变成一个变量,也可以说是一个东西,比如一个球。要用的是绑上一个输入值,就可以丢到其他地方

          A=(f:X=>Y)。使用的时候A(X)

第三等级:函数没有名字,也叫匿名函数,形式就是

          X=>Y

第四等级:当函数当为输入值,放到函数中。表现形式就是

f1:(X)=>C。这里X=(f2:A=>B)。

最后就变成f1:(f2:A=>B)=>C

这里名字就没什么意义了,所以就变成了

          f(A=>B)=>C

第五等级:把函数当初一个返回值放到函数中。表现形式就是

f:(X)=>Y。这里Y=(f:A=>B)。

最后变成f:(X)=>(A=>B)

这种表现形式就极大了扩展了函数边界。在计算机中想要比较两种不同的东西,比如苹果和牛奶,就要先把苹果变成苹果汁再进行比较,这样就要有2个函数来共同完成这件事。当苹果变成冰块的时候,原来的方法就不管用了,就要再造一个方法。再scala中就可以不用这样。

f1:(苹果,牛奶)=>f2:(苹果汁,牛奶)=>结果

f1:(冰块,牛奶)=>f3:(水,牛奶)=>结果

在Scala中就不用这样

f:(苹果)(牛奶)=>(含有苹果汁的函数)(牛奶)=>结果

f:(冰块)(牛奶)=>(含有水的函数)(牛奶)=>结果

一个函数搞定。极大的简化了流程。增加了可用性,这就是函数的柯里化的实际意义。

简化计算过程的案例还有:假如原来有5个计算公式

1:f:(A)=>B

2:f:(B)=>C

3:f:(C)=>D

4:f:(D)=>E

5:f:(E)=>F

在Scala中就可以简化成

(((((A)=>B)=>C)=>D)=>E)=>F

看上去并没有简化多少,但是在实际中,数据是大量的,如果用前面5个计算公式计算,计算5次那么数据就要全部扫描5遍

在Scala中就可以把计算公式叠加,5个公式变成一个公式,这样数据就只需要扫描一遍。当然这里也是有条件的,这5个公式必须是懒公式

在大数据时代要的就是速度快。因为数据实在是太多了。所以前辈们就想了各种办法简化他们。这让我想起吴军老师说的,古时候天难的算法,在出现了99乘法口诀表之后,我们现在小学生都能算。现在很多工具简化了流程,增加了效率,这些工具就放在那儿,如果我们不学习,我们只能活在过去。而现在我们要做的仅仅是站在巨人的肩膀上。

上一篇下一篇

猜你喜欢

热点阅读