spark-shell replで以下のコードを実行できません。工場出荷時のスパークシェルの例エラー
<console>:22: error: reference to Animal is ambiguous;
it is imported twice in the same scope by
import $VAL11.Animal
and import INSTANCE.Animal
val test = Animal("dog")
これはScalaのREPLで正常に動作します:これは私がエラーを取得するScala cookbook example provided by Alvin Alexander からの再生です。この例をスパークシェルでも動作させる方法を教えてください。
ありがとうございました!
trait Animal {
def speak
}
object Animal {
private class Dog extends Animal {
override def speak = {
println("woof")
}
}
private class Cat extends Animal {
override def speak { println("meow") }
}
def apply(s: String):Animal = {
if (s == "dog") return new Dog
else return new Cat
}
}
# repl
Animal("dog")
# compiling
object test {
def main(args: Array[String]){
Animal(args(0)).speak
}
}
':paste'コマンドを使用すると、' Animal'コンパニオンが一緒にコンパイルされます。それはあなたの質問ですか? –
ありがとう@ som-snytt。私はペーストを使用します。あなたのコメントの後、私はspark-shellでこれらを実行していて、scala replではないことに気付きました。私は私の質問を変えます。 –
おそらくhttps://issues.scala-lang.org/browse/SI-9740。 'Animal(" pug ")// show'を試してみると、インポートされたものが表示されることがあります。 –