scala知识点
- 几乎多有的语法结构都有值
- Unit类,写作(),没有返回值时候的返回值
- scala中没有switch语句
- 复制语句的返回值是 Unit类型 所以不要这样
x=y=1
- scala没有与for语句直接对应的结构
for(i <- 1 to 10)
- scala没有break或continue语句来退出循环
- scala中循环使用的频率并不高
函数
def abs(x: Double) = if (x >= 0) x else -x
def fac(n: Int):Int = if(n<=0) 1 else n*fac(n-1)
变长参数
def sum(args: Int*) = {
var result = 0
for(arg <- args) result += arg
result
}
sum(1 to 5)
sum(1 t0 5:_*)
过程
- 不返回值的函数有特殊的表示方法
- 如果函数体包含在{}中但是没有前面的=号,返回值类型就是Unit。这样的函数成为过程
def box(s:String){
var border = "-" * s.length + "--\n"
println(border + "|" + s + "|\n" + border)
}
def box(s:String):Unit = {
}
懒值
lazy val words = scala.io.Source.fromFile("/usr/share/dict/words").mkString
数组相关
val nums = new Array[Int](10)
val s = Array("hello", "world")
s(0) = "Goodbye"
int[] nums = new int[10];
int[] nums = new int[]{1,2,3,4};
import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[Int]()
val matrix = Array.ofDim[Double](3, 4)
matrix(row)(col) = 42
val trangle = new Array[Array[Int]](10);
for(i <- 0 until triangle.length)
triangle(i) = new Array[Int](i+1);
对象
- 类和它的伴生对象可以互相访问私有特性,他们必须存在同一个源文件中
- 类中的属性默认是私有级别的,自动生成getter和setter函数
- getter:就是字段名称
- setter:字段名称_
- private[this] var age:对象私有属性,当前对象私有的
内部类