【问题标题】:Unable to assign value to a var inside try in Scala无法在 Scala 中为 try 中的 var 赋值
【发布时间】:2018-04-17 13:13:17
【问题描述】:

在我的程序中,我有:

val f = Source.fromURL(url)
var lineList
try lineList = f.getLines.toList finally f.close()

我得到编译错误:

错误:(13, 1) '=' 预期但 ';'成立。 最后尝试 lineList = f.getLines.toList f.close()

我犯了什么错误?事实上,我正在做错误消息要求我做的事情。

【问题讨论】:

  • 将 var 分配给 var lineList = _
  • 当你声明一个变量时,它应该被显式初始化。只需像 var lineList = _ 一样初始化它
  • 这给出了错误:未绑定的占位符参数
  • 为什么不做val lineList: Seq[String] = { try { f.getLines.toList } finally f.close() }

标签: scala try-catch var


【解决方案1】:

因为你没有给 lineList 赋值,所以它需要一个类型定义,因为编译器无法推断类型。

var lineList: List[String]

如果你没有声明一个抽象类,你需要给它分配一些东西,例如使用通配符运算符 _

var lineList: List[String] = _

【讨论】:

  • 但这是否意味着我们正在创建一个列表对象,即使我们不会使用它,因为 lineList 将被分配给另一个对象。
  • @Mandroid 不,您没有创建任何对象,只是声明了变量。您需要指定变量应该是什么类型。
  • 在 Scasti 中,我必须为它分配一些东西。但这可能与 Scasti 的设置方式有关。
【解决方案2】:

在 Scala 中,你不能像在 java 中那样只命名一个变量。变量需要初始化。

如果你想创建一个不初始化的变量你需要指定类型:

var a = _(没有 不工作)

var a: Int = _(有效)

http://allaboutscala.com/tutorials/chapter-2-learning-basics-scala-programming/scala-basic-tutorial-declare-variables-types/

解释得很好

【讨论】:

    猜你喜欢
    • 2013-12-04
    • 2011-02-18
    • 2019-07-11
    • 2015-10-27
    • 1970-01-01
    • 2020-10-11
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多