* Scala基础简述

本文章作为Scala快速学习的教程,前提环境是:我假设在此之前,你已经学会了Java编程语言,并且我们以随学随用为目标(在此不会深度挖掘探讨Scala更高级层次的知识)。其中语言基础部分,不再做大量重复的无意义工作,我会直接使用RUNOOB.COM中的一些例子做一些整合,OK,我们开始。

* Scala行业习惯式开场

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

** Scala面向对象:

它是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。

** Scala静态类型:

Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。

** Scala在JVM上运行:

Scala被编译成由Java虚拟机执行的Java字节码,所以由Scala写好的程序编译后可以运行在Java虚拟机中。

** Scala可以执行Java代码:

Java和Scala代码可以非常方便的互相调用,惊不惊喜?意不意外?

** Scala Web框架:

Lift框架

Play框架

Bowler框架

* Scala安装及环境配置

好,扯完犊子之后,我们首先确保你的JDK配置是没有问题的,因为Scala依赖JAVA,Java如何安装配置,在此不再赘述。

Windows:

Windows环境下需要用到的工具包打包下载,包含了IDE工具,还包含一些东西请自行查看:

链接:http://pan.baidu.com/s/1o87EIbo 密码:h59u

解压scala到指定目录,然后配置环境变量:

SCALA_HOME:

 
 

PATH中添加:

%SCALA_HOME%/bin

验证是否安装成功,打开cmd执行:

scala -version,如图:

 
 

Linux:

Linux环境下需要用到的工具包打包下载,包含了IDE工具,还包含一些东西请自行查看:

链接:http://pan.baidu.com/s/1kUJFUYj 密码:cy6q

解压scala安装包到指定目录,然后配置/etc/profile,添加如下:

##SCALA_HOME

SCALA_HOME=/opt/modules/cdh/scala-2.10.4

export PATH=$PATH:$SCALA_HOME/bin

验证是否安装成功,打开终端或者CRT执行:

scala -version,如图:

 
 

* Scala的IDE工具

在本系列教程的学习中,将JetBrains作为我们的编程工具,如果你有其它喜好,请另行选择即可。安装好之后,进行简单的引导配置即可,注意:记得安装Scala插件(可以在线,也可以离线,离线包已存放于分享的压缩包中),习惯使用Android Studio或者PyCharm的朋友,应该会很熟悉了,完成之后,如图所示:

 
 

注意:在Linux中,不可以使用CRT来打开,在Linux系统终端中,执行:

$ /opt/modules/idea-IC-141.178.9/bin/idea.sh,即可启动该编译工具。

* 第一个Scala程序

不再赘述如何使用记事本,然后scalac命令编译程序(编译后会出现.class字节码文件,因为Scala最终也是运行在JVM中嘛),最后在CMD或者Linux终端中运行这个过程了,有编程基础的同学,你们都懂得。号称可以让你理解整个程序的编译原理,其实即使执行了这个过程,大多数人对整个编译原理也不能够理解,所以不再废话,我们直接使用IDE工具来构建第一个Scala程序。

Step1、点击New Project后,出现如下界面:

 
 

Next:

 
 

注意红框内的内容,记得配置Scala的SDK和Java的JDK,还有你的项目的位置以及项目名称,Finish后就OK了。

然后呢,我在左边的树状图中,在src目录下新建了一个main这个package,在main包下,我新建了一个Scala Object,依次在main包上“右键”选择“New”,接着“Scala class”,然后如图(蓝色框中的内容刚开始为class,修改为Object即可):

 
 

完成后,在当前HelloWorld.scala文件中编写如下内容即可:

 
 

然后在代码的编辑区域中按右键,选择“Run Hello World”即可,运行成功,如图:

 
 

* Scala数据类型

和Java的数据类型大致一样,在此,只说一些相比于Java不同的数据类型:

Unit:表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

Nothing:Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。

Any:Any是所有其他类的超类

AnyRef:AnyRef类是Scala里所有引用类(reference class)的基类

其余:Byte、Short、Int、Long、Float、Double、Char、String、Boolean、Null都和Java一样

* Scala变量与常量

变量与常量的定义不再赘述。直接讲述在Scala中以什么样的形式来定义变量和常量。

变量:使用var关键字来声明变量

 
 

常量:使用val关键字来声明常量

 
 

* Scala元组

简单理解:元组是不可变的,元组可以包含不同类型的元素,元组中元素的访问下标(索引)从1开始。

 
 

* Scala函数

Scala 有函数和方法,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala还允许在函数中定义函数(内嵌函数),函数名也可以是如下特殊字符:+, ++, ~, &,-, -- , \, /, :等等

函数定义方法:

def关键字+函数名+参数体+返回类型+方法体,如:

 
 

* Scala数组

Scala 语言中提供的数组是用来存储固定大小的同类型元素,与元组不同的是,存储的元素必须都是相同的类型。

 
 

二维数组:

 
 

数组的合并:

 
 

* Scala集合

** List:List的特征是其元素以线性方式存储,集合中可以存放重复对象。

请参考:List

** Map:Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。

请参考:Map

** Set:Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。

请参考:Set

* Scala函数

请参看:函数

* Scala 闭包

请参看:闭包

* Scala类和对象

请参考:类和对象

* Trait

请参考:Trait

* Scala异常处理

请参考:异常处理

* 模式匹配

请参考:模式匹配

* Apply操作处理

请参考:提取器

* Scala文件IO

请参考:文件IO

* 总结

scala的基础学习请类比Java+C#+Python,大同小异,但需要仔细体会其中差别。


个人微博:http://weibo.com/seal13

QQ大数据技术交流群(广告勿入):476966007


作者:Z尽际
链接:https://www.jianshu.com/p/bc4289ed279c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Scala基础简述的更多相关文章

  1. 【Scala学习之一】 Scala基础语法

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  2. Scala学习(一)--Scala基础学习

    Scala基础学习 摘要: 在篇主要内容:如何把Scala当做工业级的便携计算器使用,如何用Scala处理数字以及其他算术操作.在这个过程中,我们将介绍一系列重要的Scala概念和惯用法.同时你还将学 ...

  3. Scala基础(1)

    Scala基础语法 声明与定义: val,常量声明                       val  x:T(把x声明成一个类型为T的常量)  x是变量的名字,T是变量的类型          v ...

  4. scala 基础知识总结

    在最开始处引入 log 相关的 包 import org.apache.log4j.{Logger,Level} 在需要屏蔽日志输出的地方加上这两行代码 // 屏蔽不必要的日志显示在终端上 Logge ...

  5. 1.scala基础语法总结

    Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...

  6. Scala 基础(8)—— 占位符_和部分应用函数

    1. 占位符 _ 针对 Scala 基础(7)—— 函数字面量和一等函数 中最后提到的,关于 filter 函数字面量的精简写法,可以使用占位符 _ 来代替. 占位符_,用来表示一个或者多个参数.(这 ...

  7. Scala 基础(7)—— 函数字面量和一等函数

    1. 函数字面量 在 Scala 基础(3)—— 基础类型和基础操作 中提到了函数字面量,这里具体解释函数字面量的语法. 下面展示一个具体的函数字面量,它由三部分组成: (x: Int, y: Int ...

  8. Scala 基础(5)—— 构建函数式对象

    有了 Scala 基础(4)—— 类和对象 的前提,现在就可以来构建一个基于 Scala 的函数式对象. 下面开始构造一个有理数对象 Rational. 1. 主构造方法和辅助构造方法 对于每一个类的 ...

  9. Scala基础知识[一]

    摘要:在Scala 是 Scalable Language 的简写,是一门多范式(multi-paradigm)的编程语言.设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Jav ...

随机推荐

  1. 面试-MySQL

    1  事务的特性 事务具有四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持续性(Durability).这四个特性也简称ACID性. (1)原 ...

  2. oracle 时间戳TIMESTAMP

    //数据库 UPDATETIMESTAMP TIMESTAMP(6) //dto /** 更新时间戳 **/ private String updatetimestamp; //dao //插入操作 ...

  3. Python菜鸟晋级12----多线程

    Python 多线程 多线程类似于同一时候执行多个不同程序,多线程执行有例如以下长处: 使用线程能够把占领长时间的程序中的任务放到后台去处理. 用户界面能够更加吸引人.这样比方用户点击了一个butto ...

  4. Elasticsearch之重要核心概念(cluster(集群)、shards(分配)、replicas(索引副本)、recovery(据恢复或叫数据重新分布)、gateway(es索引的持久化存储方式)、discovery.zen(es的自动发现节点机制机制)、Transport(内部节点或集群与客户端的交互方式)、settings(修改索引库默认配置)和mappings)

    Elasticsearch之重要核心概念如下: 1.cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的.es的一个概念就是 ...

  5. 关于Tool接口--------hadoop接口:extends Configured implements Tool 和 ToolRunner.run

    我们在写Hadoop--map/reduce程序时,遇到使用按文件url来分析文件----------多表连接的DistributedCache方式,看不懂使用extends Configured i ...

  6. JS的数据类型(包含:7种数据类型的介绍、数据类型的转换、数据类型的判断)

    前言 最新的 ECMAScript 标准定义了JS的 7 种数据类型,其中包括: 6 种基本类型:Boolean.Null.Undefined.Number.String.Symbol (ECMASc ...

  7. 12:Challenge 5(线段树区间直接修改)

    总时间限制:  10000ms 单个测试点时间限制:  1000ms 内存限制:  262144kB 描述 给一个长为N的数列,有M次操作,每次操作是以下两种之一: (1)将某连续一段同时改成一个数 ...

  8. Codeforces 987B. High School: Become Human

    解题思路: 1.题意:判断x^y和y^x谁大谁小. 2.由于x^y和y^x太大了,时间复杂度也不允许,所以做同等变换,比较e^(ylnx)和e^(xlny). 3.即为比较ylnx和xlny的大小. ...

  9. 压缩图片C#算法

    转载自 http://www.open-open.com/lib/view/open1391348644910.html using System.IO; using System.Drawing; ...

  10. DotNetCore.1.0.1-VS2015Tools.Preview2.0.2 安装错误分析及解决办法(so far)

    折腾了这么多天总算弄完了,真恶心.为了让其他童靴避免掉进我遇到的坑里,我决定把最近遇到问题及其解决办法总结一下,希望对大家有帮助. 1.对于2016年7月底以前安装VS用户来说,可能不会那么迫切安装这 ...