Scala 是一门多范式的编程语言。设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。目的是面向对象又面向函数。
Scala在windows安装
http://www.scala-lang.org/download/
官网下载scala-2.12.4.msi,双击此安装,选择安装位置,之后默认安装即可。
设置环境变量:
新增:SCALA_HOME
编辑path变量:%SCALA_HOME%\bin和%SCALA_HOME%\jre\bin
cmd窗口输入:scala -version
Scala在Liunx安装
http://www.scala-lang.org/download/
官网下载scala-2.12.4.tgz,放在usr/local下。
- 解压: tar zxvf scala-2.12.4.tgz
- 重命名目录:mv scala-2.12.4 scala
- 设置环境变量:vi /etc/profile
export PATH=/usr/local/scala/bin:$PATH
source /etc/profile
- 检查是否成功: scala | scala -version
Scala交互式解释器
- :quit 退出
- val 常变量
- var 变量
- scala不需要分号结尾 ;scala尽量避免使用return语句
- Unit相当于void;
- scala中无++
数组 - Lists不可修改
- Tuples 可以包含不同类型的数据,索引从1开始
- Sets Map
- ==比较值和java中不同;
- 类可以有参数:叫类参数
- 应用成员变量this可有可无,但是引用对象本身this不能缺少
- 回溯函数(递归)
- 自定义运算符,可以使对象像基本类型使用
- val 函数式编程风格
- 尽量避免使用while循环
- for clauses yield body 生成新集合
- finally中用来进行清理工作,一般不要返回值
- match表达式(类似switch)
- 重复参数:*
Scala组合和继承
- mkString 实现toString()方法
- max min until to abs
- Scala.Null 和Scala.Nothing
- Ordered Trait
- Extractor
正则表达式
- findFirstIn
- findAllIn
- findPrefixOf
List
- list不可以修改
- head
- tail
- isEmpty
- 合并两个list使用:::
- reverse 如:
List(1,2,3,4).reverse
- drop
- take
- splitAt
- flatten
- zip
- unzip List
- toString
- mkString
- flatMap
过滤列表:
- filter
- partition
- find
- takeWhile
- dropWhile
- span
字符串插值功能:(2.10.0之后)
val name = "James"
println("hello $name")
JAVA中调用scala
scalac fileName.scala //编译scala文件
javap ClassName //查看类源码
javac -cp $SCALA_HOME/lib/scala-library.jar:. TestJAVAfileName.java //编译java文件
java -cp $SCALA_HOME/lib/scala-library.jar:. TestJAVAfilname //执行
JAVA的map对象转换成Scala中的map对象
import scala.collection.JavaConverters._
asScala.toMap