Scala系列:基本语法
1、常量和变量
val声明出来的为常量,不能再次赋值;可以省略类型,scala会自动推导。
var声明出来的为变量,可以再次赋值;可以省略类型,scala会自动推导。
var a = "xxx"; 等同于 var a : String = "xxx";
a = "String 2";
val b = 2;
b = 3; // 会出错
声明多个变量:
val a, b = "xxx"; // a, b的值都是 "xxx"
2、scala的常用数据类型:
Byte:内置转换为scala.runtime.RichByte
Char:内置转换为scala.runtime.RichChar
Short:内置转换为scala.runtime.RichShort
Int:内置转换为scala.runtime.RichInt
Long:内置转换为scala.runtime.RichLong
Float:内置转换为scala.runtime.RichFloat
Double:内置转换为scala.runtime.RichDouble
Boolean:内置转换为scala.runtime.RichBoolean
这些类型都是类,Scala并不区分基本类型与引用类型。
与java基本类型相对应,但拥有更多的方法,因为会转换为相应的RichXxxx,在转换后的类里添加scala语言层面的方法。
例如:
1.toLong,其中1会被转换为RichInt类型的实例。
1.to(5)会产生Range(1, 2, 3, 4, 5)
任意有穷数字:
BigInt:
BigDecimal:
字符串:
String:对应于scala.collection.immutable.StringOps
3、类型转换
使用方法,没有强制转换一说。
如:var a : Int = 1
var b : Long = a.toLong
4、操作符重载
val value = 8 + 5
其中,+ 这些操作是方法。
完整的是val value = (8).+(5);
(8)转换成Int对象,调用Int对象的+方法(方法名为+)。
没有++,--操作符,因为相应类型是不可变的。
5、Scala方法调用的简略写法
方法的简略写法:
a 方法 b
完整写
a.方法(b)
例:1.to(2),可简略写为1 to 2
apply方法:
a(b)
完整为
a.apply(b)
例: "xxx"(2) 实际转换为 "xxx".apply(2)
常用来构造对象
方法作为参数:
匿名方法:
x, y => x + y 或
_ + _
x, y 表示为参数;=>指向方法体;x + y计算和并返回。
_ + _中,第一个“_”表示第一个参数,第二个“_”表示第二个参数。
例:"sU".count(_.isUpper)
"sU".count(x => x.isUpper)
6、import
import math._
作用是导入scala.math包下所有类和对象。以scala.开头的包可以省略。
7、单例对象object
object定义的对象为单例,可以直接使用 对象名.方法(参数) 进行调用,类似java中的static方法。
伴生对象:拥有与class类同名的object定义的对象。
8、Scala doc
http://scala-lang.org/api
数学函数位于scala.math包中,而不是位于某个类中;
使用数值类型,使用RichInt、RichDouble等;
使用字符串,使用StringOps;