2016-11-04 187 views
0

我只是在斯卡拉新声明的变量,我知道斯卡拉有三个关键字来声明变量是:在斯卡拉

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?
  • 什么是内存段必须存储变量?

谢谢!

回答

1

首先,它们不是匿名方法。他们是功能,他们每个人都有一个名字,所以他们不是匿名的。

它们之间的主要区别是可以将double_3重新分配给某个不同的函数值。其他人不能。

将函数定义为def是相当罕见的。 def主要用于声明方法,因为每次引用时都会重新评估def

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

两个xy评估为7,但除了是重做每次x引用。对于y,添加在定义处完成一次,而不再一次。