我想写一个像这样的类:
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
无法编译,因为A
将被擦除,因此编译器无法找到从String
到的转换A
您将如何创建这样一个将字符串转换为其他类型的对象?我不希望库的用户重新输入类型(即通过指定类型和转换函数)。