Scala包问题

时间:2017-11-28 10:31:41

标签: scala intellij-idea import package

我有一个Words包,其中包含单词类型(NounVerbAdjective ...)但是我导入Words._并且我的IDE找到了以及每个班级,我都有这个错误:

Error:(11, 40) type mismatch;
found   : Word (in Words) 
required: Word (in <empty>) 
  val adj: Word = WordFactory.produce("big")

事情是,我的包裹中没有任何东西(在<empty>包裹中) 我正在使用IntelliJ Idea CE。

这是我的测试:

test("Adjective") {
    val expected: Adjective = Adjective("big", "big", "m", "sp")
    val test: Word = WordFactory.produce("big")
    assert(test == expected)
}

如果我澄清val test: Words.Word我的测试失败了:

Adjective(big,big,m,sp) did not equal Adjective(big,big,m,sp)
ScalaTestFailureLocation: WordFactoryTests at (WordFactoryTests.scala:13)
Expected :Adjective(big,big,m,sp)
Actual   :Adjective(big,big,m,sp)

Adjective是一个案例类,所以使用相同的args它不能是不同的。
有关信息,我有其他测试(测试其他案例类,如Noun),这些测试相同,但效果很好。

修改
问题似乎与scalatest无关,即使在主要问题上,我也有错误(使用<empty>)。

这是我的档案Word.scala

package Words

abstract class Word() {
  val correctWriting: String
  val lemma: String
  var currentWriting: String = correctWriting

  def isCounterfeited: Boolean = this.currentWriting != this.correctWriting

  def counterfeit()
}

Adjective.scala

package Words

case class Adjective(correctWriting: String, lemma: String, gender: String, number: String) extends Word {
  override def counterfeit: Unit = Counterfeiters.Adjective.counterfeit(this)
}

完整的代码位于my GitHub

1 个答案:

答案 0 :(得分:0)

最后我重命名了我的项目并解决了这个问题。奇怪的IDE的东西,我之前没有打包,并且包装中的重组破坏了一些东西 我你面临类似的问题试试你干净你的IDE!