无法在Scala Shell中将对象类型用作方法参数

时间:2018-11-21 12:32:45

标签: scala scala-repl

下面的代码在scala shell中不起作用,但是在IDE中起作用,有人可以在scala-shell中使用对象类型作为方法参数吗?

scala> object A {
     | }
defined object A

scala> def f(a:A) :Unit = {
     | }
<console>:63: error: not found: type A
       def f(a:A) :Unit = {

3 个答案:

答案 0 :(得分:1)

您可以像这样使用Object.type:

scala> object A {}
defined object A

scala> def f(a: A.type) = println("hello world")
f: (a: A.type)Unit

scala> f(A)
hello world

答案 1 :(得分:0)

只需添加特征A:

trait A
object A extends A
def f(a:A) :Unit = { }

答案 2 :(得分:0)

在IDE中工作是什么意思?我创建了一个项目,其中有一个文件juri,其内容为:

HelloWorld1

编译时出现以下错误:

object HelloWorld1 extends App {
  
  override def main(args: Array[String]): Unit = {
    object A {

    }

    def f(a:A) :Unit = {}
  }
}

如以上两个答案所述,您可以执行以下操作:

HelloWorld1.scala:8:13
not found: type A
    def f(a:A) :Unit = {}

或定义特征而不是对象:

def f(a:A.type) :Unit = {}