在Java中,我可以使用术语变量来引用任何字段。
但是由于Scala同时具有var和val,我无法想到一个可以用来表示任何值的术语,无论它是var还是val。变量不是一个好词,因为我不习惯将val称为变量。
有一个好用的术语吗?
答案 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中,我们将val
,var
和def
称为CLASS FIELD
。当您说class field
时,它会包含所有val
,var
和def
,但仅在val
和var
的Scala中没有特定{ {1}}。
我得到的这些信息来自于term
的斯卡拉书。
希望我的答案清除你的面团。