【问题标题】:Scala class extends TraitScala 类扩展了 Trait
【发布时间】:2018-10-08 22:58:22
【问题描述】:

当试图扩展一个具有具体定义的类时

trait logmsg
{
  printmsg(msg : String)  = println(msg)
}

class DimensionUtils extends logmsg {
  printmsg("hello")
}

为什么repl会报如下错误:

**error**
defined trait logmsg
<console>:16: error: not found: value printmsg
          printmsg("hello")

【问题讨论】:

  • 这段代码是正确的。我猜你正在将代码粘贴到 REPL 中,如果你将第一个 { 移动到与 trait logmsg 相同的行上,问题就会消失,以防止 REPL 将 trait logmsg 本身作为一个完整的定义。这是 Scala 程序员从不将{ 单独放在一行的原因之一。 (另一个是分号推断。)
  • 此外,寻找 scala 风格指南您应该具有以大写字母开头的特征。在 90% 的情况下,括号放在同一行,而不是新行。删除所有必要的行。您的代码可以有 7 行包含相同信息。

标签: scala class traits


【解决方案1】:

您的代码是正确的,我尝试在 Eclipse 编辑器中创建一个 Scala 项目,得到的答案是“你好” 这是运行的代码。

object StackQ extends App {
  val obj = new DimensionUtils
}

trait log_msg {
  def printmsg(msg: String) = println(msg)
}

class DimensionUtils extends log_msg {
  printmsg("hello")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多