从0开始学习scala-var、val、_、lazy

从0开始学习scala-var、val、_、lazyval 与 var 常量与变量的申明 1 var 申明的是变量 val 申明的是常量 所以值不可变 object VarAndVal var a String 1 val b String 2 def main args Array String

大家好,我是讯享网,很高兴认识大家。

val与var

常量与变量的申明

1:var: 申明的是变量, val申明的是常量,所以值不可变

object VarAndVal { 
    var a: String = "1" val b: String = "2" def main(args: Array[String]): Unit = { 
    println(s"a的值:$a") println(s"b的值:$b") } } 

讯享网

常量与变量的初始化与占位符

占位符

Scala为了让函数字面量更加精简,还可以使用下划线作为占位符,用来表示一个或多个参数。

讯享网object Placeholder { 
    //情况一 对变量进行默认初始化 注意占位符与var一同使用时必须指定数据类型 var a: String = _ def main(args: Array[String]): Unit = { 
    //情况二 占位符,表示某一个参数 val arr1 = Array("张三", "李四", "王五") arr1.foreach(println(_)) //张三 李四 王五 val arr2 = Array(1, 2, 3, 4, 5, 6, 7, 8) arr2.filter(_ > 3).foreach(println(_)) //4 5 6 7 8 9 //情况三 访问tuple(元组)的某个元素时通过索引_n来取得第n个元素 val t = ("张三", 1, 10.1) println(t._1) //张三 } } 

常量与变量的初始化

在 Scala 中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来。

object VarAndVal { 
    var a = "1" val b = "2" def main(args: Array[String]): Unit = { 
    println(s"a的值:$a") println(s"b的值:$b") } } 


讯享网

讯享网object VarAndVal { 
    val a: String = "1" val b = "2" //val b: String = _ 报错 因为val的值必须初始化并且不能与占位符使用 def main(args: Array[String]): Unit = { 
    println(s"a的值:$a") println(s"b的值:$b") } } 

2.全局申明变量可以使用占位符号(_)初始化, 但是这种情况必须指定数据类型。因为如果既不初始化也不指定数据类型,scala无法推断出数据类型

object VarAndVal { 
    def main(args: Array[String]): Unit = { 
    var c = _ //报错 因为变量在局部中必须初始化 } } 

3…局部申明变量必须初始化

讯享网object VarAndVal { 
    private var a: String = _ // private val b: String = _ 这里这样写会报错 因为val的值必须初始化并且不能与占位符使用 def main(args: Array[String]): Unit = { 
    a = "1" println(s"a的值:$a") } } 

lazy

懒加载: 使用lazy关键字修饰后,只有在使用时,才会调用或计算。

object Lazy { 
    def main(args: Array[String]): Unit = { 
    // lazy var a: String = "a" 这么写报错 lazy只能与val使用 lazy val a: String = "a" println(a); } } 
  1. var声明的时变量,val声明的是常量 ------------ 对,局部变量必须初始化
  2. 申明变量时一定可以不初始化 ------------错,局部变量必须初始化
  3. .申明变量时一定可以不指定数据类型 ------------错,当不初始化时必须指定数据类型
  4. 申明常量时一定可以不指定数据类型 ------------对,因为必须会初始化
  5. 申明常量时一定必须会初始化 ------------对
  6. lazy可以和var与val使用 ------------错,只可以与val使用
  7. 占位符只可以与var使用 ------------对,和val使用的话val值不可变,没有意义所以会报错
小讯
上一篇 2025-02-10 19:55
下一篇 2025-03-29 17:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/75938.html