2016-04-05 7 views
0

oluştururken geçerlidir, ama yazar ikili ağaç gösterimi için tanımlanan veri türüyle ilgili bir sorunu vardır:hatası: yöntemi için çok fazla argüman ben <a href="http://aperiodic.net/phil/scala/s-99/" rel="nofollow">the 99 Scala problems</a> çözüyorum bir ağacı

sealed abstract class Tree[+T] 
case class Node[+T](value: T, left: Tree[T], right: Tree[T]) extends Tree[T] { 
    override def toString = "T(" + value.toString + " " + left.toString + " " + right.toString + ")" 
} 
case object End extends Tree[Nothing] { 
    override def toString = "." 
} 
object Node { 
    def apply[T](value: T): Node[T] = Node(value, End, End) 
} 

bu hatayı alıyorum :

scala> :load tree.scala 
Loading tree.scala... 
defined class Tree 
defined class Node 
defined object End 
<console>:16: error: too many arguments for method apply: (value: T)Node[T] in object Node 
     def apply[T](value: T): Node[T] = Node(value, End, End) 

Ancak aynı OS ile yanımda oturur arkadaş (14.04 ubuntu) ve bu hataları ve onun kodu almıyor Scala aynı sürümü (2.11.8), yani aynı, iyi çalışıyor.

Scala'da çok yeniyim, ama bu bana çok garip geliyor.

cevap

1

Sen (kimin imzası üç argümanlarla eşleşmeyen) yapıcısı değil, apply tekrar aramak

def apply[T](value: T): Node[T] = new Node(value, End, End) 
//        ^^^ 

kullanmak isteyeceksiniz.

+0

Artık iyi derleniyor. Yarın derste gerçek şeyler yaparak test edeceğim. Teşekkürler. – freinn

İlgili konular