我的Scala学习之路(一)
一、Scala简介Scala语言为并发、表达性和可扩展性而设计,Scala语言及程序库可以让开发者专注于问题领域,而无需深陷于诸如线程和同步之类的底层基础结构细节。
Scala语言可以利用硬件多核的优势,创建高响应的、可扩展的、高性能的应用。
Scala是一门混合了函数式和面向对象的语言,用Scala创建多线程应用时,你会倾向于函数式编程风格,用不变状态(Immutable State)编写无锁(Lock-Free)代码。
Scala提供了一个基于Actor的消息传递(Message-passing)模型,消除了涉及并发的痛苦问题。运用此模型,你可以编写出简洁的多线程代码,而无需顾虑线程间的数据竞争,以及处理加锁和释放带来的梦魇。
把synchronized这个关键字从你的字典中清除,享受Scala带来的高效生产力吧!
Scala的益处并不局限于多线程应用,还可以用它构建强大简洁的单线程应用,或者是多线程应用中的单线程模块。Scala的强大能力包括自适应静态类型、闭包、不变的容器、优雅的模式匹配。
Scala的并发模型与Erlang语言非常相似,但Scala有两个显著的优势:
1)Scala是强类型的,Erlang不是;
2)Scala运行于JVM之上,可以与Java很好地互操作。
Scala与其它JVM之上的语言如Groovy、JRuby、Clojure等的比较:
1)JRuby和Groovy是动态语言,不是函数式的,而且无法提供比Java更好的并发解决方案;
2)Clojure是混合型的函数式语言,它天生就是动态的,不是静态类型,语法类似于Lisp,难以掌握。
Scala的特性:
1)有基于事件的并发模型;
2)既支持命令式风格,又支持函数式风格;
3)是纯面向对象的;
4)可以很好的与Java混合;
5)强制使用自适应静态类型;
6)构建于一个微内核之上;
7)是高可扩展的,可以用更少的代码创建高性能应用。
二、Scala下载与安装
1、下载
当前Scala的最新版本为:2.11.2版
下载地址:
Windows MSI版:
Windows ZIP版:
Linux RPM版:
MacOSX、Unix版:
API DOC:
SOURCE源码包:
2、安装
安装很简单,如果是zip包解压缩的安装,要注意添加两个环境变量:SCALA_HOME和PATH。
三、Scala语法
在Scala中,变量或函数的类型总是写在变量或函数名称的后面。
Scala有7种数值类型:Byte、Char、Short、Int、Long、Float、Double和Boolean。
type 类型声明
class 类声明
object 对象声明
数值类型:
整型:Int,Long,Short,Byte
浮点型:Double,Float
布尔型:Boolean
字符型:Char,String
除String归于java.lang包外,其它基本类型都是scala包的成员。
Int等基本类型的全名是scala.Int,但包scala同java.lang的所有成员都能自动引用,实际使用时可简化。
整型值:包括十进制、十六进制、八进制
十进制:数开始于非零数字 val one=15
十六进制:数开始于0x或0X val two=0xABC
八进制:数开始于0而非0x val three=0567
默认为Int类型,要声明Long类型的值,除直接声明外,还可以在数字后增加L或l。而Short和Byte需要直接声明。
val four=0xABCDL
浮点值:
浮点格式为十进制、小数点、E或e及指数部分
一般浮点数默认为Double类型,要声明Float类型除直接声明外,能在数字后增加F或f
布尔值:
val right=true
val wrong=false
字符值:
Char 单引号间的任意Unicode字符,单引号内前缀反斜杠的八进制、十六进制表字符编码数字
String 双引号之间的任意Unicode字符串
操作符运算
数学操作符:+、-、*、/、%
比较操作符:<、>、>=、<=
逻辑操作符:==、!=
位操作符:&、|、^、~
实际上,Scala没有任何操作符,所有的操作符运算都是对方法(函数)的调用。
前缀后缀操作符是一元操作符,而中缀操作符是二元操作符
操作符的优先级:特殊字符 > */% > +- > : > =! > <> > & > ^ > | > 其它字母 > 赋值操作符
转义序列:
\b \u0008 退格
\t \u0090 制表符
\n \u0004 换行
\f \u000c 换页
\r \u000d 回车
\" \u0022 双引号
\' \u0027 单引号
\\ \u005c 反斜杠
Scala基础语法:
Scala是基于行的语言,分号和换行都可以作为语句的结束
Scala脚本
1)编写文本文件,存储的后缀名改为.scala。
2)CMD下利用scalac、fsc对scala脚本进行编译
3)只包含简单语句的Scala脚本无需编译,可直接使用scala运行它。