2
我想編寫一個類看起來像這樣:對象將字符串轉換成「A」
class Store[+A](dest: Symbol)(implicit c: String => A) extends Action(dest) {
override def update(options: HashMap[Symbol,Any], arg: String): Unit = {
options += ((dest -> c(arg)))
}
}
object Store {
def apply[A](dest: Symbol)(c: String=>A) = new Store[A](dest)(c)
def apply[A](dest: Symbol) = new Store[A](dest)
}
這樣做,我有幾個問題:
- 使用隱式處理字符串導致沒有結束的問題
- 無論如何,如果系統在我的模塊中沒有定義它們,那麼它們需要在創建類的模塊中定義
- 第二個
apply
遇到在Store
對象的HOD只是不作爲編譯A
將被刪除。因此,編譯器沒有辦法找到一個轉換,從String
到A
的你會如何創建這樣的對象,一個字符串轉換爲其他類型?我不希望庫的用戶輸入類型rwice(即通過指定類型和轉換函數)。
不是一個完整的答案,但如何增加另一個隱式參數來存儲A的**清單**?正如'class Store [+ A](dest:Symbol)中隱含的a:scala.reflect.Manifest [A])(隱式c:String => A)extends Action(dest)':參見http:// scala-blogs .ORG/2008/10 /艙單-物化-types.html – VonC 2009-08-28 11:45:20