为什么Scala类对其匹配的测试类不可见?
我开始在Scala与SBT合作,制作一个Hello World节目 以下是我的项目布局: 我已经确保下载最新的JDK和Scala,并配置我的项目设置。这是我的为什么Scala类对其匹配的测试类不可见?,scala,intellij-idea,sbt,Scala,Intellij Idea,Sbt,我开始在Scala与SBT合作,制作一个Hello World节目 以下是我的项目布局: 我已经确保下载最新的JDK和Scala,并配置我的项目设置。这是我的build.sbt: name := "Coursera_Scala" version := "1.0" scalaVersion := "2.11.6" libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test" Hello.scala
build.sbt
:
name := "Coursera_Scala"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
Hello.scala本身编译正常:
package demo
class Hello {
def sayHelloTo(name: String) = "Hello, $name!"
}
但是,我附带的HelloTest.scala
没有。以下是测试:
package demo
import org.scalatest.FunSuite
class HelloTest extends FunSuite {
test("testSayHello") {
val result = new Hello.sayHelloTo("Scala")
assert(result == "Hello, Scala!")
}
}
以下是错误:
Error:(8, 22) not found: value Hello
val result = new Hello.sayHello("Scala")
^
除了编译错误外,Intellij还显示符号Hello
、assert
和=
的错误“无法解析符号”。这使我相信构建设置不正确,但是导入时不会出现错误吗?问题在于以下表达式:
new Hello.sayHelloTo("Scala")
这将创建在值Hello
上定义的类sayHelloTo
的新实例。但是,没有值Hello
,只有类Hello
您想写以下内容:
(new Hello).sayHelloTo("Scala")
这将创建类的新实例Hello
,并对该实例调用sayHelloTo
。或者您可以使用newhello().sayHelloTo(…)
。编写()应该创建一个新实例,然后调用该方法。Ah,因此错误在于我想当然地认为new
操作符将具有非常高的优先级:-)谢谢。要点是您还没有对象