2016-04-11 31 views
1

başlatılamıyor Ancakscala yapıcı bir kurucuya sahip örtük işlevini kullanın ve sınıf

implicit class TraversableView[A](self: Traversable[A]) { 

    def filterByType[B <: A: ClassTag]: Traversable[B] = { 
     val result: Traversable[B] = self.flatMap{ 
     case tt: B => Some(tt) 
     case _ => None 
     } 
     result 
    } 
    } 

ben derlemek, bende takip eden hata:

Error:(25, 9) not found: type TraversableView 
    new TraversableView(stages).filterByType[Producer].map(_.getOutputCol).toList, 
     ^
Error:(26, 9) not found: type TraversableView 
    new TraversableView(stages).filterByType[Producer].map(_.getOutputCol).lastOption 
     ^

Bu nasıl olabilir? Scala derleyicisinin bir sınırlaması mı? senin bu kod basitleştirilmiş sürümü tarafından gösterildiği gibi

+0

Bunu çözmeyi başardınız mı? – slouc

cevap

0

Ne açıklayan olan, mükemmel geçerli senaryodur:

test.Views:

object Views { 
    implicit class TraversableView[A](self: Traversable[A]) { 
    def filterByType() = println("filtered") 
    } 
} 

test.Main:

import test.Views._ 

object Main extends App { 
    val stages: Seq[String] = Seq() 
    new TraversableView(stages).filterByType() // prints "filtered" 
} 

Sizin hata başka bir yerden geliyor. İthalatı iki kere kontrol et. Benim örtük sınıfın benim durumumda Views içinde olduğu gibi başka bir sınıf/nesne içinde bulunduğundan emin olun (bu restriction, here ayrıntılı olarak açıklanmıştır).