斯卡拉 – 扁平是什么意思?
发布时间: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类型系统的高级功能之一. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |