繁体   English   中英

在Scala中声明变量

[英]Declare variable in Scala

我只是Scala的新手,我知道Scala有三个关键字来声明变量:

def defines a method
val defines a fixed value (which cannot be modified)
var defines a variable (which can be modified)

我将编写一些代码以使用匿名方法进行测试。

object Anonymous {
  def main(args: Array[String]): Unit = {
    def double_1 = (i: Int) => { i * 2 }
    val double_2 = (i: Int) => { i * 2 }
    var double_3 = (i: Int) => { i * 2 }
    println(double_1(2))
    println(double_2(2))
    println(double_3(2))
  }
}
  • 当我使用double_1,double_2,double_3时,上述三种方式有什么区别?
  • 存储变量的内存段是什么?

谢谢!

首先,它们不是匿名方法。 它们是函数,每个函数都有一个名称,因此它们不是匿名的。

它们之间的主要区别是可以将double_3重新分配给一些不同的函数值。

var double_3 = (i: Int) => { i * 2 }
double_3 = (i: Int) => i + 3  // the compiler allows this

其他人不能。

将函数定义为def是非常不寻常的。 def主要用于声明方法,因为每次引用def都会重新评估def

def x = 3 + 4
val y = 3 + 4

xy求和结果均为7,但每次引用x都重做加法。 对于y ,在定义处加法一次,再也不会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM