2

サンプルコードがあります:

    class A(str: String) {
  println(s"InsideCase:::$str")
}

object A {
  def apply(str: String) = {
    println("foobar::")
    new A(str)
  }
}

object b extends App {
  A("kool")
}

このコードは Intellij で正常に動作します。そして私に出力を与えます:

foobar::
InsideCAse:::kool

しかし、 REPL でこれを実行しようとすると:

scala> :paste
// Entering paste mode (ctrl-D to finish)

class A(str: String) {
  println(s"InsideCAse:::$str")
}

object A {
  def apply(str: String) = {
    println("foobar::")
    new A(str)
  }
}


// Exiting paste mode, now interpreting.

defined class A
defined object A

scala> A("kool")

次のエラーが表示されます:

<console>:27: error: reference to A is ambiguous;
it is imported twice in the same scope by
import $line31$read.A
and import INSTANCE.A
       A("kool")

ここで何が欠けていますか? 詳しく教えていただけると助かります。

4

1 に答える 1