加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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
}

这也将与数组一起使用.奖金:您的示例中的所有行将按预期编译和工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读