5

我正在听讲座,讲师使用的是 Eclipse,但我使用的是 IntelliJ IDEA Community Edition 15.0.6,名为rationals.scala 的 Scala 工作表上的代码如下

object rationals{
  val x = new Rational(1,2)
  x.numer
  x.denom
}

//noinspection ScalaPackageName
class Rational(x: Int, y: Int) {
  def numer = x
  def denom = y
}

Scala 工作表工作表将不会计算,并且与读取的类定义相关联的警告(非错误)

包名称与目录结构不对应,这可能会导致从该文件解析类时出现问题

此外,这很奇怪,但可能很重要,IDEA 将 numer 和 denom 标记为拼写错误。

有什么指导吗?谢谢

4

2 回答 2

3

问题不在于名称匹配目录结构,实际问题是您在工作表中有多个它不喜欢的定义。如果你在class里面声明object,那么它会正确计算:

object rationals {
  class Rational(x: Int, y: Int) {
    def numer = x
    def denom = y
  }

  val x = new Rational(1,2)
  x.numer
  x.denom
}

IntelliJ 工作表

于 2016-05-26T08:40:12.167 回答
3

@Yuval Itzchakov @MaxWen

如果您Rational.scala在工作表之外引用,那么您必须确保在第一次运行它时勾选 Make project 框。

Eclipse 和 IntelliJ 工作表的工作方式不同。——</p>

于 2016-08-20T20:54:03.257 回答