2017-06-13 50 views
0

我可以理解scala中的apply方法,它基本上是将一个函数应用于一个值。在很多情况下,这被用作构造函数的一种形式。了解scala中的更新方法

我们假设list是一张地图。一个例子是def apply(id : Int) = list(id),它从列表中获得给定的元素。

我也遇到了更新方法的例子作为

def update(id:Int,name:String) = list = list + (id -> name)

我可以理解这是什么,即它更新/添加列表中的键值对。我不明白的是该方法包含两个=符号,一个在方法定义之后,另一个在列表之后定义该方法实际执行的操作list + (id -> name)

两个=标志需要什么?彼此有什么不同?我知道=签名后方法体开始,但这是令人困惑的。

回答

3

你可以把它看作:

def update(id: Int, name: String): Unit = { 
    // perform update on 'list' 
    list = list + (id -> name) 
    // return empty (Unit) value 
} 
+0

所以它只是一个速记符号?这是新的。感谢您指出。在文档中有没有任何特定的名称? –

+0

我没有链接,也许我会稍后再搜索它。但是,是的,这是速记符号。对于方法和值,您可以交换使用两个版本。就像你可以有一个'def foo()= 42'方法一样,你也可以有一个值'val myInteger = {doSomeStuff(); 42}'(最后计算的值将被分配) – slouc

+1

http://docs.scala-lang.org/style/declarations.html#body – chunjef

1

第一=就是在定义方法签名

def update(id: Int,name: String) 

从它的定义

list = list + (id -> name) 

=分离是赋值操作,其中的表达式在的右侧被评估并分配给左侧的对象。