本系列文章只记录本人在学习过程中不会的或者不熟悉的内容
1.Scala解释器
命令行的操作方式
2.声明值和变量
多个值或者变量放在一起声明:
val xmax,ymax = 100 //将xmax和ymax均设为100
val greeting,message : String = null //将两个字符串初始化为null
3.常用类型
Byte,Char,Int,Long,Short,Float,Double,Boolean
这8个的类型均是类,Scala不刻意区分数据类型和引用类型,例如:
1.toString() //得到的是字符串“1”
1.to(10) //将交出Range(1,2,3,4,5,6,7,8,9,10)
Scala中不需要包装类型,在基本类型和包装类型之间的转换是Scala编译器的工作。
4.算术和操作符重载
①±*/%等操作符实际上都是方法,例如:a + b 实际上是 a.+(b)
在BigInt类中定义了一个名为/%的方法,该方法返回一个对偶,而对偶的内容是除法操作得到的商和余数。
通常来说可以用a 方法 b 来作为 a.方法(b) 的简写
,该方式是一个带有两个参数的方法(一个隐式的和一个显示的),例如a.to(10)可以用a to 10 代替
。
② Scala中没有++ --
操作,但可以使用+=1和-=1
5.关于方法的调用
① 如果方法没有参数,你可以不写()
。例如:Boniour.sorted
,给字符串中的字母排序。
如果一个无参方法并不能修改对象,调用时就不用写括号。
②引入包后,调用包中的方法不需要带前缀
import scala.math._ //_是通配符,类似于java中的*
sqrt(2)
pow(2,4)
min(3,Pi)
若不引入scala.math包,就要带前缀scala.math.sqrt(2)
③ 通常,类都有一个伴生对象(comapion object),其方法就跟java中的静态方法一样。
例:scala.math.BigInt
类的BigInt伴生对象有一个生成指定位数的随机质数的方法probablePrime
;BigInt.propablePrime(100,scal.util.Random)
这里的Random是定义在一个scala.util
包里的单例随机数生成器对象
6.apply方法
val s = "hello
s(4) //交出'o'
这种情况下可以把()
理解成操作符的重载,但背后的实现原理是一个名为array
的方法。
查看StringOps类的文档中,有这样一个方法:def apply(n : Int) : Char
,所以s(4)
是s.apply(4)
的简写。
注意:()
偶尔会和另一个Scala特性——隐式参数相冲突。例如前面举例,无参的方法是可以省略()
的。例:"hello".sorted(4)
是一种错误的写法,此时应该写成("hello".sorted)(4)
。
7.Scaladoc
Scaladoc中有比Java类丰富得多的便捷方法。