- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Scala中有两种类型的修饰符:final
和sealed
它们之间有什么区别?什么时候应该使用其中一种而不是另一种?
最佳答案
final
类无法扩展,句号。
sealed
特征只能在其声明的源文件中进行扩展。这对于创建 ADT(代数数据类型)非常有用。 ADT 由其派生类型的总和定义。
例如:
Option[A]
由 Some[A]
+ None
定义。List[A]
由 ::
+ Nil
定义。sealed trait Option[+A]
final case class Some[+A] extends Option[A]
object None extends Option[Nothing]
由于 Option[A]
是密封的,因此其他开发人员无法对其进行扩展 - 这样做会改变其含义。
Some[A]
是最终的,因为它不能延长,句号。
作为一个额外的好处,如果一个特征被密封,如果您的模式匹配不够详尽,编译器可以警告您,因为它知道 Option
是仅限于一些
和无
。
opt match {
case Some(a) => "hello"
}
Warning: match may not be exhaustive. It would fail on the following input:
None
关于scala - Scala 中的final 类和sealed 类有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32199989/
我正在使用 Simple Encrypted Arithmetic Library (SEAL)来自 Microsoft 密码学研究组的库。有没有办法获取seal::Ciphertext variab
下面的代码片段是有效的 public class BaseClass { public virtual void Display() { Console.WriteLine("
当当前类曾经从父类(super class)继承时,为什么我们要在方法或属性上使用 sealed 关键字?假设我们创建了一个类,并且倾向于将它的一个或多个方法暴露给对象用户,但根本不让它被继承,并使用
我试图阻止我的基类派生其方法之一,但似乎不可能以我喜欢的方式进行,我认为我做错了。 你能帮忙吗? :)我真的很想成功使用 sealed 关键字! 这里有一些代码: public class BaseC
我有一种情况想要解释编译器的行为。给出一些代码: interface IFoo { T Get(); } class FooGetter : IFoo { public int Get
A 是来自引用的 dll 的类,因此无法更改。它有一个方法 Foo(),在我的 DoFoo() 方法中调用(将 A 作为参数)。我想在不执行 Foo() 的情况下测试 DoFoo(),因为它很昂贵并且
我认为 sealed 应该包含在 C# 语言的访问修饰符列表中。有人可以告诉它被排除在外的原因吗? 最佳答案 它不是访问修饰符,它与一个类是否可以继承有关... 关于c# - 为什么 sealed 关
假设我计算了 2 的加法 或乘法 Ciphertexts并将结果放入第三个。如果我想对我的结果执行额外的数学运算 Ciphertext (目的地 Chipertext ),是否建议使用 evaluat
我正在使用 PySEAL库,它是 Microsoft SEAL 的一个分支同态加密库,用于在加密数据上实现机器学习算法。为此,我需要除以数字。在examples.py源代码中有执行加法、减法和乘法的示
我的 SEAL v2.3.1 中有这些 SEAL 设置: seal::EncryptionParameters parms; parms.set_poly_modulus("1x^2048 + 1")
A) 我无法理解这些设置之间的关系: parms.set_poly_modulus("1x^2048 + 1"); parms.set_coeff_modulus(coeff_modulus_128(
虽然我知道出于安全原因可以使用 sealed,但有些人在叶节点上使用 sealed 关键字作为优化技术。 这对优化有何帮助?为什么编译器不够聪明,无法自己解决这个问题? 最佳答案 假设您有一个在叶类中
我想模拟类似固定对象的东西,这样就不能向对象添加新成员。 Object.seal(Obj) 似乎是正确的方法,但当我尝试创建新成员时它并没有抛出异常。成员没有被创建,但它悄无声息地发生。 var O
我对密文和最后的正方形进行了一系列计算。问题是,即使有足够的噪声预算来执行平方和重新线性化(在操作之前和之后),当我解密它时,我也会得到不正确的结果。 奇怪的是,如果我解密和解码,然后在新的密文中再次
这个问题在这里已经有了答案: Is the sealed command c++ 0x or is it only microsoft who has it (3 个答案) 关闭 5 年前。 考虑以
我正在玩 java 15 中的预览密封类,我想知道为什么关键字 sealed 和 non-sealed 只适用于类和接口(interface),而不适用于方法(像其他修饰符一样)。我想具体决定哪些方法
我正在使用 FunKTiale 库执行模式匹配。然后,当我按如下方式初始化变量时: private lateinit var socket = Option.None 下面的转换是不可能的: sock
我有一个抽象类,继承时需要重写 3 个方法。但我真的很想密封另一种方法,这样它就不会被覆盖。它包含整个类工作的重要逻辑,我希望避免用户通过在他/她不应该做的地方进行覆盖来终止功能。 有办法实现这一点吗
Iron.seal 无法更新 npm 模块 Iron,这就是我在登录用户时遇到此问题的原因 var obj = { a: 1, b: 2, c: [3, 4, 5],
我正在编写一个绘制图形的脚本。我希望该图形保持完整,直到用户手动关闭它(例如单击十字)。 如果用户在 Matlab 提示符下发出绘图命令,这不应影响现有图形,但会自动打开一个新图形。 如何在 Matl
我是一名优秀的程序员,十分优秀!