Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Scala类对其匹配的测试类不可见?_Scala_Intellij Idea_Sbt - Fatal编程技术网

为什么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

我开始在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本身编译正常:

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
操作符将具有非常高的优先级:-)谢谢。要点是您还没有对象