值和变量
val定义的变量是不可变的,如果想用可变的变量,则用var
当我们用给three变量用val赋值的时候,想要给它重新赋值,则会报错。
val three = 3
three = 4
下面的代码赋值是不会报错的
var three = 3
three = 4
函数
- 创建
用def定义,参数的类型用:分隔,返回值则写在最后。
def onePlusOne(one: Int, Other: Int): Int = one + Other
- 匿名函数
val paramPlus = (param: Int) => param + 1
- 如果一个函数中有多个表达式的时候该怎么办呢?看下面
def test(x: Int): Int = {
println("Hello Scala")
x * 3 //最后一个为返回值
}
匿名函数也是一样的
val ann = {
x: Int => println("Hello Scala")
x * 3
}
部分应用
使用下划线“_”部分应用一个函数,结果将得到另一个函数
def multiply(m:Int,n:Int) = m * n
val mul2 = multiply(2, _: Int)
mul2(4)
柯里化函数
方便我们可能在不同的场景传入不同的参数。
def add(m:Int)(n:Int):Int = m + n
val add2 = add(2)_
add2(5)
模式匹配
- 值匹配
val value = 2
value match {
case 1 => "one"
case 2 => "two"
case _ => "some other number"
}
- 守卫匹配,值会传递给我们给case定义的变量i
value match {
case i if i == 1 => "one"
case i if i == 2 => "two"
case _ => "some other number"
}
- 类型匹配
def bigger(o: Any): Any = {
o match {
case i: Int if i < 0 => i - 1
case i: Int => i + 1
case d: Double if d < 0.0 => d - 0.1
case d: Double => d + 0.1
case text: String => text + "s"
}
}
网友评论