Scala学习笔记(1)-快速起步

本文是对Scala语言的一个基本介绍和快速入门,共包括如下章节:

  • 概述
  • 安装Scala
  • 交互式命令行工具
  • 文件方式
  • 基本语法规范
  • 开发工具
  • 小结

参考资料:因为Scala源码是编译成Java字节码,然后在jvm中执行。并且scala和java可以相互无缝调用。因此scala语言和java语言有天然的关系,语法也比较类似,所以熟悉JAVA语言对理解Scala语言有很大帮助。

一、概述

Scala是当前热门的现代编程语言之一,尤其在大数据领域,如spark,kafka等大数据技术的而核心代码都是使用Scala语言编写的。scala由洛桑联邦理工学院的Martin Odersky设计,第一个版本发布于2003年,现在最新版本为2.12版本。

Scala语言有如下一些主要的特性:

  • 基于JVM运行,可以和java相互无缝互操作
  • 静态类型,编译型语言,编译成java字节码
  • 支持函数式编程范式
  • 纯面向对象编程语言,所有值都是对象
  • 并发性,使用Actor作为其并发模型
  • 自动类型推断功能

二、安装scala

从官方网站www.scala-lang.org/download下载二进制版本,如下图所示:

如果要在window下安装,下载windows下的安装包 scala-2.12.8.msi,下载到本地后,双击运行安装即可。安装完成后,安装程序会将scala安装目录下的bin目录加入到Path环境变量中,这样可在dos命令行下的任何当前目录下运行bin目录下的可执行脚本或程序。

如果要在Linux下安装,下载scala-2.12.8.tgz,下载到本地后解压即可,然后解压目录下的bin目录加入到PATH环境变量中,便于任何当前目录下都可运行bin目录下的可执行脚本或程序。

三、交互式命令行工具

scala提供了一个交互式命令行脚本(linux下文件名为scala,windows下文件名为scala.bat),可以快速的来简单学习scala的语法知识。

打开命令行,运行scala,出现交互式界面,就可以输入代码,输入:quit退出交互式程序(注意quit前要有冒号)。

C:\Windows\System32>scala
Welcome to Scala 2.12.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions for evaluation. Or try :help.

scala> println("hello,world")
hello,world

scala> :quit

C:\Windows\System32>

四、文件方式

交互式命令行只是用来进行编程练习的。实际的应用开发中,源代码是保存在文件中的,然后进行源代码编译,再运行。scala提供了一个脚本文件scalac(windows下为scalac.bat)可以进行源代码的编译,将源文件编译成class文件,然后可以利用scala脚本来运行。下面通过一个简单的例子来举例。

建立一个源码文件,文件名如HelloWorld.scala保存到本地,scala的源文件的扩展名为scala。文件内容如下:

object HelloWorld {
   def main(args: Array[String]) {
      println("Hello, world!")
   }
}

上面代码虽少,但是一个完整的可独立运行的scala应用程序。一个独立运行的scala应用程序的入口是一个单例对象(如上面用object关键字定义的HelloWorld对象)的main方法(如上面用def关键字定的方法),类似java中的main方法的入口。更详细的scala语法参见《Scala学习笔记(2)-基础语法》。

下面对源代码文件进行编译,并运行,整个过程如下:

D:\scaladev\demo>ls
HelloWorld.scala

D:\scaladev\demo>scalac HelloWorld.scala

D:\scaladev\demo>ls
'HelloWorld$.class'   HelloWorld.class   HelloWorld.scala

D:\scaladev\demo>scala HelloWorld
Hello, world!

编译用到scala的scalac程序,类似jdk中的javac,运行使用scala程序,类似jdk中的java程序。

需要特别说明的是,scala是一个纯面向对象的编程语言,在编写scala程序时,所有的语句(如函数定义、变量声明和赋值)都必须被包含在类或单例对象中。我们前面看到在scala提供的交互式命令行程序中可以直接输入语句(并没有定义类)进行执行,是因为命令行程序已经做了特殊的处理。

五、基本语法规范

  • 区分大小写,如变量、函数名等都区分大小写

  • 单行语句后面可以加分号结尾(如java),也可以不加分号结尾

六、开发工具

可以有多种方式来编写scala程序,在正式项目开发中我们一般使用可视化的IDE工具,如IntelliJ。如果是学习scala的语法和相关的api,也可以使用scala提供的命令行工具(如前面介绍的),或不需要任何工具直接使用一些在线的编程练习系统。

(一)使用带有Scala插件的IntelliJ IDE

  • 安装
    1、首先下载并安装IntelliJ Community Edition
    2、安装scala插件。

  • 创建项目
    1、打开IntelliJ并单击File => New => Project
    2、 在左侧面板中,选择Scala。在右侧面板中,选择IDEA。
    3、在出现的对话框中,将项目命名为HelloWorld
    4、假设这是您第一次使用IntelliJ创建Scala项目,则需要安装Scala SDK。在Scala SDK字段的右侧,单击“ 创建”按钮。如果本地已经有scala运行环境,选择所在的目录即可;如果没有,选择下载。创建SDK并返回“新建项目”窗口。
    5、 单击“ 完成”。

  • 编写代码
    1、在左侧的“ 项目”窗格上,右键单击src并选择“ 新建” =>“ Scala类”。
    2、命名该类Hello,并将Kind更改为object。
    3、将类中的代码更改为以下内容:

object Hello {
   def main(args: Array[String]) {
      println("Hello, world!")
   }
}
  • 运行程序

在左侧的“ 项目”窗格上,右键单击Hello节点并选择Run'Hello'。
或在选中Hello节点,按快捷键 ctrl+shift+F10 可运行程序。

(二)使用SBT

sbt是类似ANT、MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具。其主要特性有:

  • 原生支持编译Scala代码和与诸多Scala测试框架进行交互;
  • 使用Scala编写的DSL(领域特定语言)构建描述
  • 使用Ivy作为库管理工具
  • 持续编译、测试和部署
  • 整合scala解释器快速迭代和调试
  • 支持Java与Scala混合的项目

当安装配置好后SBT后,我们可以在命令行下使用SBT,也可以在IntelliJ中使用SBT。关于SBT的详细信息我们不在本文中介绍。

七、小结

本文并没有对scala的语法进行详细介绍,主要是介绍scala运行环境和开发工具的搭建。下面的文章是对scala语言的更多介绍。

1、《Scala学习笔记(2)-基础语法》
2、《Scala学习笔记(3)-面向对象编程上篇》
3、《Scala学习笔记(4)-面向对象编程下篇》
4、《Scala学习笔记(5)-函数式编程》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容