動態數量的方法我會合並這兩種方法:與類型參數
def get[A](m: Map[String, Any], k: String) =
m(k).asInstanceOf[A]
def get[A, B](m: Map[String, Any], k1: String, k2: String) =
(m(k1).asInstanceOf[A], m(k2).asInstanceOf[B])
對於參數,我可以使用可變參數。 是否有類型的解決方案?
[更新]這個例子是重點輕量級的重點。 在我真正的用例中,Map是由我的數據庫驅動程序返回的一個對象(一個由Casbah返回的MongoDBObject)。
[UPDATE2這裏是真正的代碼
def getH0(query: Query, magic: Boolean = false): Iterable[Long] =
getHits(query, magic)((o: DBObject) => o.as[Long]("hits"))
def getH1[A](query: Query, magic: Boolean = false): Iterable[(A, Long)] =
getHits(query, magic)(asTuple[A, Long]("_id", "hits"))
def getH2[A, B](query: Query, magic: Boolean = false): Iterable[((A, B), Long)] =
getHits(query, magic)(asTuple3[A, B, Long](query.dimension.get.apply(0), query.dimension.get.apply(1), "hits"))
def getHits[T](query: Query, magic: Boolean = false)(f: DBObject => T): Iterable[T] = {
第一個get返回一個'A',第二個get返回一個元組 - '(A,B)'。你期望合併的方法是什麼結果類型? – serejja
@GovindSingh它根本就不是一個笨蛋--Yann想知道什麼,如果有的話,可以用來表示一個任意長的序列類型,來定義元組的內容 - 來代替'[A,B]'。 –
@serejja我猜Yann想要一個產品[A,B,C,D,...](無效的語法來表達願望)。 –