Scala入门学习教程

作者: 蓝桥云课 | 来源:发表于2017-10-10 10:37 被阅读253次

一、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.png

3、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,当然你也可以:

  • 点击实验楼,直接搜索想学的教程;
  • 点击学习路径,15条技术学习路径,跟着路径零基础入门;

相关文章

网友评论

    本文标题:Scala入门学习教程

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