一、Scala简介:
Scala简介:
Scala 是一门多范式的编程语言,类似于 Java 。设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。
Scala 一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 Java 虚拟机 (Java Virtual Machine) 之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言。
相比较与 Java, 在下觉得 Scala 最主要的有以下两点优势:
- FP 泛型支持
如果用多了 Spring 中大量的 template 接口, 你就会觉得 FP 其实还是蛮好用的,而这仅仅是 FP 好处的冰山一角。函数其实就是一个
input -> output
(scala 也是这么表示一个函数的), 没有任何副作用, 与状态无关, 由于这种特性, 所以函数式的编程范式在分布式领域有很多好处对于函数式编程。
我的知识实在是皮毛, 但可以这么说, FP 相对与 OO 有哪些优势, Scala 对于 Java 差不多就有哪些优势。正因为 FP 有如此多的优势, 所以 Java8 才引入了 FP, 从某种程度上来说, Java 认可了 Scala 的做法.
- 类型系统支持
如果说 Java 是一种类型安全的语言, 那么毫无疑问, Scala 的类型更加安全, 从某种程度上说, Scala 的类型是图灵完备的, 而 Java 不是. 我的一位好朋友在这方面研究的比较深( http://hongjiang.info/scala/ ), 而我对与 Scala 的类型系统的理解, 也还是皮毛.
正是以上这两点大优势, 造成了 Scala 比 Java 更加安全, 同时又具备灵活性, 想象力.
注:以上两点优势抄选自文章
国外有很多公司都在使用scala,如LinkedIn, EDFT,Twitter, Novell, the Guardian, Xebia, Xerox, FourSquare, Sony, Siemens, Thatcham, OPower, GridGain, AppJet, Reaktor等。
Scala运行环境:
当然,如果你想要学习Scala首先需要安装好 Scala 运行环境,你可以使用命令行,Notepad,或者使用 Scala IDE 或是 IntelliJ,如果你不想安装任何软件,你可以通过在线 Scala 编译器Scalakata.com ,以浏览器的方式来练习 Scala 编程。
在实验楼中,我们提供了命令行的方式来让你学习 Scala 。
首先需要打开终端(指实验楼在线开发环境里的终端),你可以通过多种方式完成此步,如下图所示:
此处输入图片的描述接着,只需要在终端中输入如下命令,便可进入 Scala Shell :
/usr/local/scala-2.11.7/bin/scala
此处输入图片的描述
如上图所示,当看到 scala>
字样开始的命令行提示符时,则说明已经进入 Scala 的“交互式命令行环境”。
此处输入图片的描述实验楼为你提供了两种实验环境的模式:图形界面和字符界面。其中,字符界面更加适合 Scala 解释器的工作。如果需要在两种界面间切换,你可以在顶部工具栏上进行选择,如下图所示。
二、入门——实现 Hello World
先用每个编程语言开发教程都会有的 “Hello,World” 来带你入门了解Scala吧;
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
如果一行中的代码太长,可以在该行最后以 Shift键
+Enter键
进行换行即可。输入上述代码后,显示如下图所示:
这段代码对于 Java 程序员来说似曾相识,它包含一个 main
方法,用来打印 “Hello, world” 这个问候语。
这段代码,你可以使用命令行交互式执行:
HelloWorld.main(null)
执行的结果如下图所示:
此处输入图片的描述如果你不想使用这种交换式运行方式,你可以使用任何文本编辑器或是使用 IDE 来运行 Scala 代码。如果使用普通的编辑器,在把代码保存为 HelloWorld.scala
之后,可以在命令行使用 scalac
(和 javac 使用方法类似)来编译 Scala 代码。
在实验楼的实验环境中,你可以通过任务栏的应用程序菜单
中的开发->Sublime
来打开 Sublime Text 2
(一款流行的文本编辑器软件)。如下图所示:
然后在窗体中输入前文提到的 HelloWorld 代码:
此处输入图片的描述然后将其保存到桌面上,文件名为 HelloWorld.scala
:
接着,在桌面上打开终端,然后输入编译的命令:
/usr/local/scala-2.11.7/bin/scalac HelloWorld.scala
运行 Scala 应用:
/usr/local/scala-2.11.7/bin/scala HelloWorld
注意 scalac
编译也是生成 .class
文件(和 Java 一样),因此你也可以通过 -d
、-cp
等选项指定生产的 class 的目录和运行应用时 class 的访问目录。
而使用 scala 来运行应用时,无需再调用 HelloWorld.main(null)
。Scala 会自动执行指定类的 main
方法,运行效果如下图所示:
你也可以把 Scala 代码作为脚本语言来运行,比如使用下面代码在 Ubuntu 些运行。
#!/bin/sh
exec scala "$0" "$@"
!#
object HelloWorld extends App {
println("Hello, world!")
}
HelloWorld.main(null)
运行效果如图(图片由原作者提供):
此处输入图片的描述
版权声明:文章前面内容截选自实验楼教程【Scala开发教程】,该教程由作者引路蜂提供并授权使用,实验楼基于原著进行了内容和章节的优化,修正了一些错误。版权归原作者所有。未经允许,不得以任何形式进行传播和发布。
上面非常简单的带你了解了Scala以及入门Hello World程序,如果你对Scala感兴趣,可以选择下面的教程进行学习,当然最重要的是可以在实验楼在线开发环境里直接体验Scala,无需自己安装环境;
三、Scala学习教程推荐:
1、Scala开发教程
该教程为Scala入门教程,带你学习 Scala 的基础语法、类和对象、基本数据类型、控制语句以及函数等方面的知识,从而更好地来编写 Scala 应用。
该教程共14节内容,实验列表如下:
- 开启神奇的Scala编程之旅
- 起步Scala
- 类和对象(一)
- 基本数据类型及其操作
- 类和对象(二)
- 控制语句
- 函数(一)
- 函数(二)
- 组合和继承(一)
- 组合和继承(二)
- 类层次关系和底层类型
- Trait
- 使用Package(包)
- 访问控制修饰符
2、Scala开发二十四点游戏
这是一个实战项目教程,该项目通过一个算 24 点游戏的形式,进一步巩固 Scala 的基础,学习到数学表达式的穷举方法、全排列算法,以及如何在 Java 中调用 Scala 的代码等。
该项目的实验列表如下:
image.png3、Scala 专题教程 - 隐式变换和隐式参数
教程主要介绍 Scala 中可以让函数库调用变得更加方便的隐式变换和隐式参数,以及如何通过它们来避免一些繁琐和显而易见的细节问题。课程内容主要包括 implicits 的使用规则、隐含类型转换、转换被方法调用的对象等。
4、Scala 专题教程 - Case Class和模式匹配
该教程侧重介绍Scala的case class和pattern matching(模式匹配),这两个程序结构对于处理树结构的数据非常有帮助。在本课程中,你将可以学习到模式匹配中的常量模式、通配模式和变量模式等,以及如何进行模式限定修饰和重叠模式的定义和正确定义可选项。
5、Scala 专题教程 - Extractor
该教程侧重讲解 Scala 中的 Extractor ,它可以将数据模型和视图逻辑分离,在 Scala 体系中充当类似于适配器的角色,是一种极具函数式的做法。你将可以在课程中学到如何定义和设定 Extractor 。本课程难度为一般,属于初级级别课程,适合具有 Scala 基础的用户。
6、Scala 专题教程 - 抽象成员
教程主要介绍 Scala 中的抽象成员用法。先前的基础课程中提到 Scala 中的类型成员也可以是抽象的,而抽象字段和抽象方法都只有字段或者方法的定义,没有字段或者方法的具体实现。在该课程中,你将可以学到如何使用 Type 成员,以及抽象 vals 变量的初始化方法等要点。
最后
以上简单的带你了解了Scala,也推荐了6门教程,你可以点击其中感兴趣的教程学习Scala,当然你也可以:
网友评论