文章目录
- scala中的变量
- 常量 val(不可变变量)
- 变量 var
- 变量声明
- 多变量声明
- 匿名变量 _ 声明
- 变量类型声明
- 变量命名规范
scala_1">scala中的变量
常量 val(不可变变量)
使用val
关键字声明变量是不可变的,一旦赋值后不能被修改
对于 val
类型的变量,一旦它被初始化,它所指向的内存地址就不会改变(尽管该地址中的值可能会改变,如果它引用的是一个可变对象)。
scala">val name = "Alice"
val name = "Bob" // 这行代码会导致编译错误,因为 name 是不可变的
变量 var
使用 var
关键字声明的变量是可变的,可以在其生命周期内被重新赋值。然它的值可以被重新赋值,但它的类型仍然是固定的
对于 var
类型的变量,其引用的内存地址可以改变,这意味着你可以将 var
变量重新赋值为不同的值,这些值可能会存储在不同的内存地址中。
scala">var age = 25
age = 26 // 这行代码是合法的,因为 age 是可变的
变量声明
在 Scala 中,使用 var
关键字声明的变量确实是可变的,这意味着你可以在变量的生命周期内多次改变它的值。然而,这并不意味着你可以多次声明同一个变量。一旦一个变量被声明,就不能在同一作用域内再次声明它,无论它是 var
还是 val
。
多变量声明
你可以在一行代码中声明多个变量,使用逗号分隔:
scala">val a, b, c = 1 // a, b, c 都被赋值为 1
使用元组进行声明(解包)
scala">var (x, y, z) = (10, 20, "world")
匹配声明
scala">val tuple = (1, 2.0, "three")
tuple match {case (x: Int, y: Double, z: String) => println(s"x=$x, y=$y, z=$z")
}
匿名变量 _ 声明
在匿名函数和模式匹配中,你可以使用 _
作为匿名变量或占位符。
scala">val numbers = List(1, 2, 3, 4, 5)
val evenNumbers = numbers.filter(_ % 2 == 0) // _ 代表当前元素
变量类型声明
在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。
所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。
- 显式类型声明:明确指定变量的类型。
- 类型推断:省略类型声明,由编译器推断类型。
在 Scala 中,如果你不显式地指定变量的类型,编译器会尝试根据变量的初始值推断其类型。这种类型推断机制确实可以让你编写更简洁的代码。然而,一旦变量的类型被推断出来,它就不能再改变以接受不同类型的值
显式类型声明
scala">object ListData {def main(args:Array[String]):Unit={val lst: List[Any] = List(1,2,3,5)val str1: String = "helllo"}
}
类型推断
scala">object ListData {def main(args:Array[String]):Unit={val lst = List(1,2,3,5)val str1= "helllo"}
}
变量命名规范
- 变量名必须以字母(A-Z 或 a-z)或下划线(_)开头。
- 尽量不要使用以下划线开头的变量名,这通常用于标识内部或私有变量。
- 变量名不能是Scala的关键字。
- 驼峰命名:myVariableName
,
userAge,
accountBalance