【问题标题】:Scala in intellij cannot find my function definition?Intellij 中的 Scala 找不到我的函数定义?
【发布时间】:2021-12-30 18:32:53
【问题描述】:

我在 intellij 中实现了一个玩具工作表。

abstract class Nat:
  def isZero: Boolean
  def predecessor: Nat
  def successor: Nat
  def + (that: Nat): Nat
  def - (that: Nat): Nat
end Nat

object Zero extends Nat:
  def isZero: Boolean = true
  def predecessor: Nat = ???
  def successor: Nat = Succ(this)
  def + (that: Nat): Nat = that
  def - (that: Nat): Nat = if that.isZero then this else ???
  override def toString = "Zero"
end Zero

class Succ(n: Nat) extends Nat:
  def isZero: Boolean = false
  def predecessor: Nat = n
  def successor: Nat = Succ(this)
  def + (that: Nat): Nat = Succ(n + that)
  def - (that: Nat): Nat = if that.isZero then this else n - that.predecessor
  override def toString = s"Succ($n)"
end Succ

val two = Succ(Succ(Zero)) // : Succ =
val one = Succ(Zero)
two + one
two - one
//one - two

到目前为止,其他工作表的评估都很好,但是当我评估这个时,我遇到了一些错误,如下所示:

// defined class Nat







4 |  def successor: Nat = Succ(this)
  |                       ^^^^
  |                       Not found: Succ






// defined class Succ








1 |val two = Succ(Succ(Zero))
  |                    ^^^^
  |                    Not found: Zero
1 |val one = Succ(Zero)
  |               ^^^^
  |               Not found: Zero
1 |two + one
  |^^^
  |Not found: two
1 |two - one
  |^^^
  |Not found: two

如何解决未找到的错误?

【问题讨论】:

  • 工作表逐行评估,在该行,Succ 不存在。您能做的最好的事情就是在普通项目中编写该代码,然后在工作表中导入这些类,或者只使用 main 方法。
  • 或将所有内容包装在一个对象中
  • 试试这个:调出 Worksheet Settings(点击左上角的小扳手图标)并将 Run type: 从 REPL 更改为清楚的。看看有没有帮助。

标签: scala intellij-idea


【解决方案1】:

具体问题是工作表按顺序执行,在定义Zero时还没有定义Succ

更一般地说,我建议切换到完整的App,而不是工作表。编写和运行App 是非常东方的事情。使用您的代码创建App 的子类:

object Worksheet extends App {
  println("Hello world")
}

然后只需单击object 左侧的绿色箭头,IntelliJ 就会编译并运行程序。

或者右键选择Debug,这样你就可以在代码的关键点上下断点,然后逐行单步执行。

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 2012-10-03
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 2021-10-13
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多