Spark,一种快速数据分析替代方案(2)

Scala 语言由 Ecole Polytechnique Federale de Lausanne(瑞士洛桑市的两所瑞士联邦理工学院之一)开发。它是 Martin Odersky 在开发了名为 Funnel 的编程语言之后设计的,Funnel 集成了函数编程和 Petri net 中的创意。在 2011 年,Scala 设计团队从欧洲研究委员会 (European Research Council) 那里获得了 5 年的研究经费,然后他们成立新公司 Typesafe,从商业上支持 Scala,接收筹款开始相应的运作。

举例说明 Scala

让我们来看一些实际的 Scala 语言示例。Scala 提供自身的解释器,充许您以交互方式试用该语言。Scala 的有用处理已超出本文所涉及的范围,但是您可以在 参考资料 中找到更多相关信息的链接。

清单 1 通过 Scala 自身提供的解释器开始了快速了解 Scala 语言之旅。启用 Scala 后,系统会给出提示,通过该提示,您可以以交互方式评估表达式和程序。我们首先创建了两个变量,一个是不可变变量(即 vals,称作单赋值),另一个变量是可变变量 (vars)。注意,当您试图更改 b(您的 var)时,您可以成功地执行此操作,但是,当您试图更改 val 时,则会返回一个错误。


清单 1. Scala 中的简单变量

$ scala Welcome to Scala version 2.8.1.final (OpenJDK Client VM, Java 1.6.0_20). Type in expressions to have them evaluated. Type :help for more information. scala> val a = 1 a: Int = 1 scala> var b = 2 b: Int = 2 scala> b = b + a b: Int = 3 scala> a = 2 <console>6: error: reassignment to val a = 2 ^  

接下来,创建一个简单的方法来计算和返回 Int 的平方值。在 Scala 中定义一个方法得先从 def 开始,后跟方法名称和参数列表,然后,要将它设置为语句的数量(在本示例中为 1)。无需指定任何返回值,因为可以从方法本身推断出该值。注意,这类似于为变量赋值。在一个名为 3 的对象和一个名为 res0 的结果变量(Scala 解释器会自动为您创建该变量)上,我演示了这个过程。这些都显示在 清单 2 中。


清单 2. Scala 中的一个简单方法

scala> def square(x: Int) = x*x square: (x: Int)Int scala> square(3) res0: Int = 9 scala> square(res0) res1: Int = 81  

接下来,让我们看一下 Scala 中的一个简单类的构建过程(参见 清单 3)。定义一个简单的 Dog 类来接收一个 String 参数(您的名称构造函数)。注意,这里的类直接采用了该参数(无需在类的正文中定义类参数)。还有一个定义该参数的方法,可在调用参数时发送一个字符串。您要创建一个新的类实例,然后调用您的方法。注意,解释器会插入一些竖线:它们不属于代码。


清单 3. Scala 中的一个简单的类

scala> class Dog( name: String ) { | def bark() = println(name + " barked") | } defined class Dog scala> val stubby = new Dog("Stubby") stubby: Dog = Dog@1dd5a3d scala> stubby.bark Stubby barked scala>  

完成上述操作后,只需输入 :quit 即可退出 Scala 解释器。

接下来请看第2页精彩内容

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2f38c0dc5330d104222397d87c6e85cc.html