【发布时间】:2021-09-09 18:08:35
【问题描述】:
我正在试用 Scala 3,并尝试将字符串文字分配给控制台中的变量。如果我不给它一个明确的类型,一切都很好:
scala> val s = "hello"
val s: String = hello
而且该变量甚至具有推断的类型String。但是,当我明确类型时,会出现类型错误:
scala> val t: String = "hello"
1 |val t: String = "hello"
| ^^^^^^^
| Found: ("hello" : String)
| Required: String
当我使用显式类型创建 var 时也会发生同样的情况:
scala> var v: String = _
var v: String = null
scala> v = "hello"
1 |v = "hello"
| ^^^^^^^
| Found: ("hello" : String)
| Required: String
但是,如果我用字符串文字初始化 var,我可以为它分配其他字符串文字:
scala> var u = "hello"
var u: String = hello
scala> u = "world"
u: String = world
一些字符串变量被允许保存字符串字面量,而另一些则不允许的类型系统秘密是什么?
【问题讨论】:
标签: string scala type-conversion typeerror scala-3