
Scala特性
yhao浩
关注机器学习,关注NLP
展开
-
[Scala函数特性系列]——使用可变参数
scala同java一样,在定义函数的时候支持接收可变长参数列表,即最后一个参数的可以被重复。示例代码如下: 结果:在此代码中我们定义函数printInfo接收变长参数列表,其最后一个参数names可以根据实际情况进行传参(这里我们传了3个实参)。注意,函数可变参数只能是该函数的最后一个参数(否则不能识别参数长度,这个应该很好理解)。printInfo函数被声明的参原创 2016-02-19 17:12:55 · 3570 阅读 · 0 评论 -
[Scala函数特性系列]——使用命名参数
在正常的函数调用中,调用参数在调用函数中是按其定义时的参数顺序进行一一匹配。如果需要按不同的顺序传递参数,就要使用到scala的一种函数特性——命名参数。命名参数使用方法很简单,即在调用函数时,指定参数名并进行赋值。示例代码如下: 结果: 从代码和结果中就可以看出使用命名参数的优点:在需要时可以任意的指定函数中某个参数的值,而不必将此参数之前的参数都赋值一遍。原创 2016-02-19 16:53:33 · 799 阅读 · 0 评论 -
[Scala函数特性系列]——按名称传递参数
通常情况下,函数的参数是传值参数;即参数的值在它被传递给函数之前被确定。但是,如果我们需要编写一个接收参数不希望马上计算,直到调用函数内的表达式才进行真正的计算的函数。对于这种情况,Scala提供按名称参数调用函数。示例代码如下: 结果: 在代码中,如果定义函数的时候,传入参数不是传入的值,而是传入的参数名称(如代码中使用t: => Long而不是t: Lo原创 2016-02-19 16:32:36 · 4573 阅读 · 1 评论 -
[Scala函数特性系列]——高阶函数
带函数参数的函数由于是一个接受函数参数的函数,故被称为高阶函数,像之前讲到的map()函数就是高阶函数。如下例所示:上述代码中,apply函数接受一个函数f作为参数,接受一个Int类型的参数,进行f(v)运算,在下面又给出了f具体的定义(layout函数)。 同样的,高阶函数也可以产出另一个函数(即返回结果为一个函数,而不是某个值或对象),如下例所示:这里函数rec原创 2016-02-21 21:25:57 · 4659 阅读 · 0 评论 -
[Scala函数特性系列]——作为值的函数和借贷模式
在scala中,函数是“头等公民”,几乎所有的操作都是以函数形式进行。同样的,能够在变量中存放函数(听上去很神奇吧)。示例如下:本段代码将ceil函数赋值给fun变量,ceil后面的_表名这是一个函数,而不是碰巧忘记给它传参。 在scala中,不需要为每个函数命名,这种没有命名的函数叫做匿名函数。如何进行匿名函数的定义呢?示例如下:(x:Double) => 3 * x原创 2016-02-21 17:04:51 · 1430 阅读 · 0 评论 -
[Scala函数特性系列]——部分应用函数和柯里化
柯里化是指将原来接收两个参数的函数变成接收一个参数的函数的过程,新的函数返回一个以原有第二个参数作为参数的函数。是不是有种被绕晕了的感觉,先别急,先看一个示例: 结果: 这里可以看出,柯里化函数与多个参数的函数具有相同的功能,这中间有一个“应用部分函数”,或者叫“偏应用函数”,这个函数multipleOf4表示固定了两个参数中的一个,部分提供了函数mul所需要的参数原创 2016-02-22 17:23:00 · 2421 阅读 · 0 评论