@songlaf
2016-08-23T09:48:59.000000Z
字数 769
阅读 544
Scala
Scala调用Java的方法时,会碰到有Scala的保留字,如Thread.yield()
这在Scala中是非法的,专门有个解决办法,写成: Thread.yield
()
var 可变,可重新赋值,赋值为"_"表示缺省值(0, false, null),例如:
var d:Double = _ // d = 0.0
var i:Int = _ // i = 0
var s:String = _ // s = null
var t:T = _ // 泛型T对应的默认值
注意:仅 val可用"_"表示缺省值赋值。
val 不可变,相当于const/final,但如果val为数组或者List,val的元素可以赋值;
val pi = 3. // 相当于3.0d
val pi = 3.f // 相当于3.0f
提示:向函数式风格推进的一个方式,就是尝试不用任何var来定义变量
val x,y = 0 // 赋同一初始值
val (x,y) = (10, "hello") // 同时定义多个变量,注意:val x,y=10,"hello" 是错误的
更花:
val x::y = List(1,2,3,4) // x = 1, y = List(2,3,4)
val List(a,b,c) = List(1,2,3) // a = 1, b = 2, c = 3
进一步花样:
val Array(a, b, _, _, c @ _) = Array(1, 2, 3, 4, 5, 6, 7) // 也可以用List,Seq
a // 1
b // 2
c // Array(5, 6, 7), _匹配0个到多个这个也太花了吧!
使用正则表达式定义:
val regex = "(\d+)/(\d+)/(\d+)".r
val regex(year, month, day) = "2010/1/13"
// year: String = 2010
// month: String = 1
// day: String = 13