Я хотел бы написать класс, похожий на этот:
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
Как бы вы создали такой объектчто преобразовать строку в какой-то другой тип?Я бы не хотел, чтобы пользователь библиотеки вводил тип rwice (т. Е. Указав тип и функцию преобразования).