4 和 5.07 不是对象。它们只是Int和Double类的实例。在这里查看层次结构。
对象在编译时未实例化。当您第一次访问它时,它会被实例化(在对象主体/构造函数执行的意义上)。
函数也不是对象,它们是扩展 FunctionN 的匿名类的实例(例如Function2)。但是是的,有object,它提供了一些常见的实用程序,允许您编写:
//instance of Function2
scala> val sum = (x: Int, y: Int) => x+y
sum: (Int, Int) => Int = <function2>
scala> sum.curried
res0: Int => (Int => Int) = <function1>
// now back to uncurried version with Function object
scala> Function.uncurried(res0)
res1: (Int, Int) => Int = <function2>
如果您对普通类和案例类之间的区别感兴趣,请看这里。
不幸的是,与 smalltalk 相比,我不知道 smalltalk 来假设 scala oop 纯度。