是否有一个术语来引用var和val?

时间:2017-01-10 05:16:08

标签: scala variables

在Java中,我可以使用术语变量来引用任何字段。

但是由于Scala同时具有var和val,我无法想到一个可以用来表示任何值的术语,无论它是var还是val。变量不是一个好词,因为我不习惯将val称为变量。

有一个好用的术语吗?

3 个答案:

答案 0 :(得分:2)

当我遇到这些问题时,我通常会参考语言规范。

规范声明了两个部分,值声明变量声明

  

4.1价值声明和定义:

Dcl          ::=  ‘val’ ValDcl
ValDcl       ::=  ids ‘:’ Type 
PatVarDef    ::=  ‘val’ PatDef 
PatDef       ::=  Pattern2 {‘,’ Pattern2} [‘:’ Type] ‘=’ Expr 
ids          ::=  id {‘,’ id} 
  

值声明val x: T引入x作为a的名称   类型的值。

  

4.2变量声明和定义

Dcl            ::=  ‘var’ VarDcl
PatVarDef      ::=  ‘var’ VarDef
VarDcl         ::=  ids ‘:’ Type
VarDef         ::=  PatDef
                 |  ids ‘:’ Type ‘=’ ‘_’
  

变量声明var x: T等同于getter函数x和setter函数的声明x _ =:

它们中的两个可能没有统一的调用约定,但它们通常可以互换使用。我喜欢将val视为一个不可变值,其中对它的引用可能不会改变,而var作为可变引用。请注意,这些可能并不总是成立,因为当我们讨论基元时,基础值是包含该值的实际字节。

答案 1 :(得分:1)

取自Programming in Scala, First Edition(强调我的):

  

Scala有两种变量,vals和vars。

答案 2 :(得分:0)

在Scala中,我们将valvardef称为CLASS FIELD。当您说class field时,它会包含所有valvardef,但仅在valvar的Scala中没有特定{ {1}}。 我得到的这些信息来自于term的斯卡拉书。 希望我的答案清除你的面团。