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

Scala中最终课和密封课程有什么区别?

发布时间:2020-12-16 09:30:42 所属栏目:安全 来源:网络整理
导读:Scala有两种类型的修饰符:final和sealed 他们有什么区别?什么时候应该使用一个在另一个? 解决方法 最后一班不能延长,期间。 密封特征只能在与其声明的同一源文件中扩展。这对于创建ADT(代数数据类型)很有用。 ADT由其派生类型的总和定义。 例如。: 一个
Scala有两种类型的修饰符:final和sealed

他们有什么区别?什么时候应该使用一个在另一个?

解决方法

最后一班不能延长,期间。

密封特征只能在与其声明的同一源文件中扩展。这对于创建ADT(代数数据类型)很有用。 ADT由其派生类型的总和定义。

例如。:

一个选项[A]由Some [A] None定义。
> A列表[A]由:: Nil定义。

sealed trait Option[+A]

final case class Some[+A] extends Option[A]
object None extends Option[Nothing]

因为选项[A]是密封的,它不能被其他开发人员扩展 – 这样做会改变它的意义。

一些[A]是最终的,因为它不能被延长。

另外,如果特征被密封,编译器可能会警告您,如果您的模式匹配不够详尽,因为它知道Option限制为Some和None。

opt match {
    case Some(a) => "hello"
}

Warning: match may not be exhaustive. It would fail on the following input: None

(编辑:李大同)

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

    推荐文章
      热点阅读