scala笔记攻略

scala的简单介绍

Scala 是 Scalable Language 的简写,是一门多范式的编程语言。集成面向对象编程和函数式编程的各种特性。Scala 运行在Java虚拟机上,并兼容现有的Java程序

scala的基本特性

  1. 面向对象特性: Scala是一种纯面向对象的语言,每个值都是对象。对象的数据类型以及行为由类和特质描述。
    类抽象机制的扩展有两种途径:一种途径是子类继承,另一种途径是灵活的混入机制。这两种途径能避免多重继承的种种问题。
  2. 函数式编程: Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。
    更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。
  3. 静态类型: Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:
			泛型类
			协变和逆变
			标注
			类型参数的上下限约束
			把类别和抽象类型作为对象成员
			复合类型
			引用自己时显式指定类型
			视图
			多态方法
  1. 扩展性: Scala的设计秉承一项事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:
    任何方法可用作前缀或后缀操作符
    可以根据预期类型自动构造闭包
  2. 并发性: Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。

scala的安装与配置

  1. scala的安装: Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机,推荐安装JDK1.8。 在http://www.scala-lang.org/ 下载Scala2.11.8程序安装包
    如果没有安装java环境,可以自行百度jdk下载,找到oracle官网;进入网站后,点击 Accept License Agreement 后,选择与自己电脑操作系统匹配的型号,然后点击我的电脑->属性->高级系统设置->环境变量->找到path:在里面添加jdk路径和jre路径(都要进入到bin目录里面再复制当前目录)在这里插入图片描述
    然后win+R输入cmd回车后输入javac -version 和 java -version 出现版本号即可。在这里插入图片描述
    接下来,我们可以从 Scala 官网地址 http://www.scala-lang.org/downloads 下载 Scala 二进制包
    在这里插入图片描述
    下载后,双击 msi 文件,一步步安装即可,安装过程你可以使用默认的安装目录。

安装好scala后,系统会自动提示,单击 finish,完成安装。

右击我的电脑,单击"属性",进入如图所示页面。下面开始配置环境变量,右击【我的电脑】–【属性】–【高级系统设置】–【环境变量】,如图:

设置 SCALA_HOME 变量:单击新建,在变量名栏输入:SCALA_HOME: 变量值一栏输入:D:\Program Files(x86)\scala 也就是 Scala 的安装目录,根据个人情况有所不同,如果安装在 C 盘,将 D 改成 C 即可。

设置 Path 变量:找到系统变量下的"Path"如图,单击编辑。在"变量值"一栏的最前面添加如下的路径: %SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;

注意:后面的分号 ; 不要漏掉。

设置 Classpath 变量:找到找到系统变量下的"Classpath"如图,单击编辑,如没有,则单击"新建":

“变量名”:ClassPath
“变量值”:.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar.;
注意:"变量值"最前面的 .; 不要漏掉。最后单击确定即可。

检查环境变量是否设置好了:调出"cmd"检查。单击 【开始】,在输入框中输入cmd,然后"回车",输入 scala,然后回车,如环境变量设置ok,你应该能看到这些信息。

scala基本语法

  1. Scala 基本语法需要注意以下几点:
    区分大小写 Scala是大小写敏感的。
    类名的第一个字母要大写 如果需要使用几个单词来构成一个类的名称,每个单词的第一个字母要大写。例:classMyFirstScalaClass
    所有的方法名称的第一个字母用小写 如果若干单词被用于构成方法的名称,则除第一个字母外每个单词的第一个字母应大写。例:def myMethodName()
    程序文件的名称应该与对象名称完全匹配(新版本不需要了,但建议保留这种习惯)。
    Scala程序从main()方法开始处理,def main(args: Array[String]) 这是每一个Scala程序的强制程序入口部分。
  2. 标识符 Scala 可以使用两种形式的标志符,字符数字和符号。
 1.字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号"$"在 Scala 中也看作为字母。然而以"$"开头的标识符为保留的
    Scala 编译器产生的标志符使用,应用程序应该避免使用"$"开始的标识符,以免造成冲突。
符号标志符包含一个或多个符号,如+:? 
    + ++ ::: < ?> :-> Scala 内部实现时会使用转义的标志符,比如:-> 使用 $colon$minus$greater 来表示这个符号。因此如果你需要在 Java 代码中访问:->方法,你需要使用 Scala 的内部名称
  $colon$minus$greater。
    混合标志符由字符数字标志符后面跟着一个或多个符号组成,比如 unary_+ 为 Scala对+方法的内部实现时的名称。字面量标志符为使用"定义的字符串,比如 `x` `yield`。你可以在"之间使用任何有效的 Scala 标志符,Scala 将它们解释为一个 Scala 标志符,一个典型的使用为 Thread 的
    yield 方法, 在 Scala 中你不能使用 Thread.yield()是因为 yield 为 Scala 中的关键字,你必须使用 Thread.`yield`()来使用这个方法。

3.Scala 关键字
在这里插入图片描述
4.Scala 注释
Scala 类似 Java 支持单行和多行注释。多行注释可以嵌套,但必须正确嵌套,一个注释开始符号对应一个结束符号。
5.空行和空格
一行中只有空格或者带有注释,Scala 会认为其是空行,会忽略它。标记可以被空格或者注释来分割。
1.scala是面向行的语言,语句可以用分号(;)结束或换行符。Scala 程序里,语句末尾的分号通常是可选的。如果你愿意可以输入一个,但若一行里仅 有一个语句也可不写。另一方面,如果一行里写多个语句那么分号是需要的
2.Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种
第一种方法和 Java 一样,在文件的头定义包名,这种方法就后续所有代码都放在该包中。第二种方法可以和c#一样定义多个包名
3.Scala 使用 import 关键字引用包。

import java.awt.Color  // 引入Color
 
import java.awt._  // 引入包内所有成员
 
def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent
  ...  // 因为引入了java.awt,所以可以省去前面的部分
}

注意:默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._,这里也能解释,为什么以scala开头的包,在使用时都是省去scala.的。

6.Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:
在这里插入图片描述
在 Scala 中,使用关键词 “var” 声明变量,使用关键词 “val” 声明常量。
在这里插入图片描述
在这里插入图片描述
变量的类型在变量名之后等号之前声明。定义变量的类型的语法格式如下:
在这里插入图片描述
在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。
Scala 支持多个变量的声明:
在这里插入图片描述
如果方法返回值是元组,我们可以使用 val 来声明一个元组:
在这里插入图片描述
Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala 中的方法跟 Java 的类似,方法是组成类的一部分。Scala 中的函数则是一个完整的对象,Scala 中的函数其实就是继承了 Trait 的类的对象。Scala 中使用 val 语句可以定义函数,def 语句定义方法。
方法声明
Scala 方法声明格式如下:
在这里插入图片描述
如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。
6.方法定义
方法定义由一个 def 关键字开始,紧接着是可选的参数列表,一个冒号 : 和方法的返回类型,一个等于号 = ,最后是方法的主体。
Scala 方法定义格式如下:
在这里插入图片描述
以上代码中 return type 可以是任意合法的 Scala 数据类型。参数列表中的参数可以使用逗号分隔。
在这里插入图片描述
在这里插入图片描述
7.方法调用
Scala 提供了多种不同的方法调用方式:
以下是调用方法的标准格式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值