fol*_*one 3 reflection types scala wildcard
我有以下情况:
有一个方法def f(lst: List[Any]),它对列表进行一些转换并返回转换的结果(所有这些Any都是case类).我需要完成的是当输入列表为空时,生成一个列表,其中包含一个正确类型的元素并使用它进行转换.
是否有可能在类型级别上保证某些case类具有no-arg构造函数?如果是这样,应该Any替换什么?如果不是,最好的方法是什么?也许我应该把我的方法改成类似的东西def f[T](lst: List[T], default: T)?
任何帮助赞赏.
你在找这样的东西吗?
import scalaz._
import Scalaz._
scala> def f[A : Zero](lst: List[A]) = {
| val xs = if(lst.isEmpty) List(mzero[A]) else lst
| xs ++ xs // some transformation
| }
f: [A](lst: List[A])(implicit evidence$1: scalaz.Zero[A])List[A]
scala> f(List.empty[Int])
res1: List[Int] = List(0, 0)
scala> f(List("hello", "world"))
res2: List[java.lang.String] = List(hello, world, hello, world)
Run Code Online (Sandbox Code Playgroud)
如果是的话,你可以参考我刚才在这个主题上写的这篇文章.