2016-11-22 3 views
1

У меня есть следующее определение класса:Как использовать SCALA оценки параметра типа для доступа к методу

class Pipe[ A ](a: A) { 
    def |>[ B ](f: A => B) = f(a) 
    def map[A, B, C](f: C => B)(implicit ev: A =:= List[C]): Seq[B] = { a.map(f) } 
} 

Класс выше не компилируется со следующей ошибкой в ​​map метода:

value map is not a member of type parameter A 

Я пробовал два подхода, но никто не работает. Как я могу определить метод map, так что a: A известен как последовательность и, следовательно, может использовать метод карты?

TIA.

ответ

2

Вы затенение параметра типа A. Удалите его из определения карты:

class Pipe[ A ](a: A) { 
    def |>[ B ](f: A => B) = f(a) 
    def map[B, C](f: B => C)(implicit ev: A =:= List[B]): Seq[C] = a.map(f) 
}