变量是Scala中的对象吗?

变量是Scala中的对象吗?,scala,Scala,既然Scala是一种纯面向对象的语言,那么变量和对象本身又如何呢?我可以在Scala中看到文本值本身就是一个对象,但不确定变量。变量不是Scala中的对象。这不是Scala所独有的,它适用于所有主流编程语言,甚至是Haskell或Smalltalk等语言,事实上,它适用于几乎所有的编程语言 在Scala中,每个值都是一个对象,但变量不是值,因此也不是对象。还有其他一些东西不是值,尤其是类型。类型、类别、特征以及方法 objects有时看起来它们既是值又是类型,但实际上并非如此。如果定义一个对象F

既然Scala是一种纯面向对象的语言,那么变量和对象本身又如何呢?我可以在Scala中看到文本值本身就是一个对象,但不确定变量。

变量不是Scala中的对象。这不是Scala所独有的,它适用于所有主流编程语言,甚至是Haskell或Smalltalk等语言,事实上,它适用于几乎所有的编程语言

在Scala中,每个值都是一个对象,但变量不是值,因此也不是对象。还有其他一些东西不是值,尤其是类型。类型、类别、特征以及方法

object
s有时看起来它们既是值又是类型,但实际上并非如此。如果定义一个
对象Foo
,则
Foo
是一个值,但类型是单例类型
Foo.type
,而不是
Foo
本身。对于配套模块,您确实有一个名为
Foo
的类型和一个名为
Foo
的值,但它们是不同的。(值和类型可以具有相同的名称,因为它们是严格分开的,因此不会有任何可能混淆您所谈论的这两个值中的哪一个。)

文字类型看起来也像是使用值作为类型,但实际上,这只是语法上的糖分。literal类型
42
实际上只是singleton类型
42.type
的语法糖。同样,这是有效的,因为值和类型是两个独立的宇宙,因此,在任何上下文中,我们都不清楚是在谈论值还是文字类型

另一个不是对象的东西是语言语法


我所知道的两种语言中,变量实际上是可以谈论和操作的对象,它们是和。

你对变量的意思是什么?所以一个变量存储一个对象,但是变量的概念不是一个对象。“[…]但是变量不是值,因此不是对象。”-这个含义对我来说并不明显