【问题标题】:Compilation Error : 'value foreach is not a member of Unit'编译错误:'value foreach 不是 Unit 的成员'
【发布时间】:2016-05-02 23:36:10
【问题描述】:

嗨,下面是代码。函数Split_line 返回一个数组。我想splitted 的值应该是Array 类型。但被编译器视为Unit。我在这里做错了什么?

object Main {

  def Split_line(line: String){
    line.split("\\|\\|")    
  }

  def main(args: Array[String]) {
    val splitted = Split_line("This is a line || hi ")
    //***I am getting error here : 'value foreach is not a member of Unit'
    splitted.foreach(println) 
  }

}

【问题讨论】:

  • 您错过了=。应该是def splitLine(line:String) = {。除此之外,我建议始终放置函数的返回类型,通常是为了避免这种错误。这也是一个很好的做法,IMO。以印刷错误结束。
  • @AlexisC。做对了 - 有关更多信息,请参阅stackoverflow.com/questions/944111/…。以后,请在代码块中包含您的代码的实际文本,以便我们可以轻松复制和粘贴自己尝试,而不是截图。

标签: scala


【解决方案1】:

该语法始终表示函数返回单元。使用def Split_line(line: String) = {(带有等号)或更好,如果您不确定,请明确声明返回类型:def Split_line(line: String): Seq[String] = {

请注意,我们甚至计划在某个时候完全删除该语法:"Procedure syntax is dropped in favor of always defining functions with ="

【讨论】:

  • 只使用| 对我不起作用。必须有 \\ 才能使其工作。 | 看起来像是正则表达式的一部分,所以必须使用 \\ 才能使其工作
  • 哦,没错,那是一个正则表达式,而不是一个字符串分隔符!很好,已编辑:-)
猜你喜欢
  • 1970-01-01
  • 2020-04-27
  • 2012-08-31
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多