美文网首页
Scala之函数

Scala之函数

作者: 马惠良 | 来源:发表于2018-12-08 00:00 被阅读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乘法口诀表之后,我们现在小学生都能算。现在很多工具简化了流程,增加了效率,这些工具就放在那儿,如果我们不学习,我们只能活在过去。而现在我们要做的仅仅是站在巨人的肩膀上。

    相关文章

      网友评论

          本文标题:Scala之函数

          本文链接:https://www.haomeiwen.com/subject/bpsfhqtx.html