我想写一个这样的类:
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
一
如何创建将字符串转换为其他类型的对象?我不希望库的用户输入rwice类型(即通过同时指定类型和转换函数)。
我不明白你想用第二个 apply . 对我来说,这是第一次 应用 应该有隐式关键字,你就可以用它了。您可以显式传递参数,或者如果隐式存在则将其保留。而且,你不需要通过 c 显式地,因为您已经将它隐式地包含在第一个 应用 .
应用
c
我敢说第二个 应用 不编译,因为没有隐式 String => A 适用范围 object Store .
String => A
object Store