【问题标题】:A simple extends will not work, how to do it in scala一个简单的扩展是行不通的,如何在scala中做到这一点
【发布时间】:2011-10-17 00:13:16
【问题描述】:

我尝试使用 scala 玩,但这里出了点问题。可能是因为太晚了,也可能是因为 eclipse 不能正常工作,但我这里有一个错误:

    class A(
      val name: String,
      val age: Integer,
      val pro: Boolean
    )

    class B(val size: Integer) extends A(name, age, pro) //error
  • 未找到:值年龄 B.scala /Test/src 第 1 行 Scala 问题
  • 未找到:值名称 B.scala /Test/src 第 1 行 Scala 问题
  • 未找到:value pro B.scala /Test/src 第 1 行 Scala 问题

A 类在同一个包中。我坚持这就是扩展工作的方式......有人有想法吗?

【问题讨论】:

  • 考虑如果编译后将为 name、age 和 pro 提供什么值,然后执行 val b = new B(4)。顺便说一句,Int 通常是比 Integer 更好的选择。

标签: scala


【解决方案1】:

定义class B(val size: Integer) extends A(name, age, pro) 时,您还定义了一个构造函数,该构造函数将使用nameagepro 参数从A 调用构造函数。编译器抱怨未定义该变量。

所以你需要的可能是这样的:

class B(val size: Integer
  name: String,
  age: Integer,
  pro: Boolean) extends A(name, age, pro)

另外,Scala 中的整数类型通常称为IntInteger 指的是java.lang.Integer。通常Int 工作得很好,除非您遇到 Java 互操作性问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-21
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多