Scala密封特性
特质
Scala中的密封特性用于在Scala应用程序中进行详尽的检查。由于进行了详尽的检查,该程序允许在单个文件中声明密封特征的成员。
这可以通过预先提供特征的所有可能成员的列表来帮助编译器。这减少了我们代码中出错的机会。
让我们看一下代码块,这里有一个特征,所有成员都用它声明。
sealed trait trait1{}
class class1 extends trait1
class class2 extends trait1
class class3 extends trait1现在,由于我们具有密封的特征,因此将使用详尽的检查,这将要求包括该特征的所有子类型,否则将发出警告。
示例
sealed trait royalEnfield
{
val speed= 110;
}
class bullet extends royalEnfield
{
override val speed = 125;
}
class thunderbird extends royalEnfield
{
override val speed = 137;
}
class continental extends royalEnfield
{
override val speed = 152;
}
object myObject
{
def main(args: Array[String])
{
val bullet350 = new bullet;
val thbd350 = new thunderbird;
val gt = new continental;
println(topSpeed(bullet350));
println(topSpeed(thbd350));
println(topSpeed(gt));
}
def topSpeed(Article: royalEnfield): Int = Article match
{
case bullet350: bullet =>bullet350.speed;
case thbd350: thunderbird =>thbd350.speed;
case gt: continental =>gt.speed;
}
}输出结果
125 137 152
特质的某些特征
编译器预先知道特征的所有子类型,这有助于通过引发警告来避免错误。
密封特性的继承仅由声明特性的文件内的类允许。在外部文件中,如果类尝试扩展特征,则编译器将抛出错误。
为了防止上述类型的继承,通常将枚举特性与枚举一起使用。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短