0
'적용'방법을 이해하려고합니다. 전달 된 인수에 따라 List, Array 또는 Set 중 하나를 반환하는 클래스를 만들고 싶습니다. 이 코드는 List 및 Set에는 사용할 수 있지만 Array에는 사용할 수 없습니다. 나는이 문제클래스에서 배열을 반환 할 수 없습니다.
class CollectionFactory [A](s:String){}
object CollectionFactory {
def apply[A](s: String): Traversable[A] = {
s match {
case "list" => {
List[A]()
}
//this doesnt work. It seems using [A] is incorrect. How do I specify the type?
/*
case "array" => {
new Array[A](1)
}
*/
case _ => {
Set[A]() }
}
}
}
val c = CollectionFactory[Int]("list")
c: Traversable[Int] = List()
CollectionFactory[String]("list")
res0: Traversable[String] = List()
CollectionFactory[Boolean]("")
res1: Traversable[Boolean] = Set()
# 1은 문제가되지 않습니다 : 그것은 암시 적으로'Traversable' – Dima
@Dima 좋은 점을 _is_ WrappedArray''로 변환 얻을 것이다. –