IT小白IT课程分享

Scala入门学习教程

2017-10-10  本文已影响253人  蓝桥云课

一、Scala简介:

Scala简介:

Scala 是一门多范式的编程语言,类似于 Java 。设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。

Scala 一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃 Java 这个强大的平台,它运行在 Java 虚拟机 (Java Virtual Machine) 之上,轻松实现和丰富的 Java 类库互联互通。它既支持面向对象的编程方式,又支持函数式编程。它写出的程序像动态语言一样简洁,但事实上它确是严格意义上的静态语言。

相比较与 Java, 在下觉得 Scala 最主要的有以下两点优势:

如果用多了 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节内容,实验列表如下:

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

上一篇 下一篇

猜你喜欢

热点阅读