为什么字符串不是值?

最高
scala> val a = Int
a: Int.type = object scala.Int

scala> val a = String
<console>:11: error: object java.lang.String is not a value
       val a = String
               ^

为什么scala不会java.lang.String为了创造String价值而周围创建薄包装纸当主要类型(String)之一不能在表达式中使用或不能传递给函数或从函数返回时,它不是很严格吗?

Sarveshseri

好吧...在Scala中class可以有伴随对象。

而任何对象的同伴对象class A实际上是的实例A.type

所以...当你这样做

val i = Int

你得到的是companion objectclass Int是的实例Int.type

请记住,这Int仍然不是价值...您拥有的这东西不是Int它也不是的实例Int它是的实例Int.type

但是就String……而言,它被定义为java.lang.StringJava世界中相应名称的别名,因此没有这样的别名companion object因此,该val分配不适用于它。

至于为什么String不包裹在Scala中。可能有很多原因。但是一个主要原因是因为不需要这样做。

Scala希望具有pure对象层次结构,以便一切都是对象,并从同一根继承Any和Java有基本的类型一样intlong等等......这不是对象...这创造了需要它们包装成Int

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的对象的值是函数而不是字符串?

为什么字符串类型的默认值是null而不是空字符串?

为什么字符串文字不是字符串?

为什么Objective-C中的字符串指针接受并返回字符串的值而不是内存地址?

为什么我的 for 循环返回字符而不是字符串

为什么System.Char []输出而不是字符串值?

为什么布尔布尔值隐式转换为字符串不是错误?

为什么这个假值会转换为空字符串而不是 0?

如果值是变量而不是字符串,为什么PHP in_array()返回false?

在ASP.NET WebApi中,为什么RouteData的值类型是“对象”而不是“字符串”

C#:为什么我的字符串返回对象类型而不是它包含的值?

为什么字符串转换不是数字促销的类型?

为什么字符串不是向量(的子类)?

为什么HttpRequest.HttpMethod是字符串而不是Enum?

为什么此函数返回''而不是串联字符串

为什么port是字符串而不是整数?

为什么errorString是结构而不是字符串

为什么去写000 / s而不是字符串?

为什么字符串文字不是prvalue

Sequelize 字符串不是函数错误,为什么?

为什么对字符串使用“ \ t”而不是“ <press TAB>”?

为什么我得到“字符串不是函数”?

为什么这个字符串不是日期

为什么即使我将这些值作为字符串类型插入,tkinter 项中的数字值也是整数而不是字符串?

什么是具体化的字符串,而不是空值

为什么修改字符串数组元素时不是字符串变化

为什么字符串对象需要#include <string>而不是字符串文字?

为什么Java具有“字符串”类型而不是“字符串”?

为什么可以从字符串变量而不是PHP中的字符串实例化类?