scala – 使用Seq [T]返回String而不是Seq [Char]的方法
发布时间:2020-12-16 21:31:47 所属栏目:安全 来源:网络整理
导读:我想实现采用任意Seq [T]的方法,并返回Seq [T].但是当提供String时,它也应该返回String. 传递字符串的作用是由于一些从String到WrappedString的隐式转换扩展了IndexedSeq [Char],但是我得到了Seq [Char].是否可以获取String? val sx: Seq[Int] = firstAndLa
我想实现采用任意Seq [T]的方法,并返回Seq [T].但是当提供String时,它也应该返回String.
传递字符串的作用是由于一些从String到WrappedString的隐式转换扩展了IndexedSeq [Char],但是我得到了Seq [Char].是否可以获取String? val sx: Seq[Int] = firstAndLast(List(1,2,3,4)) val s1: Seq[Char] = firstAndLast("Foo Bar") val s2: String = firstAndLast("Foo Bar") //incompatible types error def firstAndLast[T](seq: Seq[T]) = Seq(seq.head,seq.last) firstAndLast()实现是无关紧要的,它只是一个例子. 解决方法
是的,这是可能的.你必须要求其中一个花哨的CanBuildFroms:
import scala.collection.generic.CanBuildFrom def firstAndLast[CC,A,That](seq: CC)(implicit asSeq: CC => Seq[A],cbf: CanBuildFrom[CC,That]): That = { val b = cbf(seq) b.sizeHint(2) b += seq.head b += seq.last b.result } 这也将与数组一起使用.奖金:您的示例中的所有行将按预期编译和工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |