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

斯卡拉 – 扁平是什么意思?

发布时间:2020-12-16 09:08:19 所属栏目:安全 来源:网络整理
导读:我试图理解Some :: flatten的定义并遇到麻烦.以下是它的外观: def flatten[B](implicit ev: A : Option[B]): Option[B] = if (isEmpty) None else ev(this.get) 我不明白A:的平均值选项[B].什么:意思? 解决方法 这是一个广义类型约束,它确保您展平的类型
我试图理解Some :: flatten的定义并遇到麻烦.以下是它的外观:

def flatten[B](implicit ev: A <:< Option[B]): Option[B] =
  if (isEmpty) None else ev(this.get)

我不明白A<:<的平均值选项[B].什么<:<意思?

解决方法

这是一个广义类型约束,它确保您展平的类型的格式为Option [Option [T]](或List [List [T]]).它的作用是删除一层Option或List.所以有些(Some(3))变为Some(3),Some(None)变为None,None变为None.对于列表:List(List(1,2),List(3))变为List(1,2,3).

有一篇非常好的文章描述了在标准库中使用广义类型约束,找到了here.

编辑:正如@mavarazy所说,它也可以将Seq [Option [T]]压平为Seq [T].广义类型约束是一个非常强大的设备,我认为它是Scala类型系统的高级功能之一.

(编辑:李大同)

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

    推荐文章
      热点阅读