Scala 上限

Scala 上限

Scala对类型参数或类型变量有一些限制,即(类型界限), Upper bound 就是其中之一。通过实现类型边界,我们可以阐述类型变量的限制,这些类型边界限制了类型变量的确定值,并披露了这些类型成员的更多细节。上限是在类型参数上定义的。

语法

[T <: S]

其中,’T’是一个类型参数,’S’是一个类型[T <: S]意味着这个类型参数T必须与S相同或者是S的子类型。

让我们通过例子来理解上限。

例子

// Scala Program To Demonstrate Scala Upper Bound
class GeeksforGeeks
class Author extends GeeksforGeeks
class Geeks extends Author
  
class ComputerSciencePortal
{
    // Declaration of upper bound
    def display [T <: Author](d : T)
    {
        println(d)
    }
}
  
// Object created
object ScalaUpperBounds
{
    // Driver code
    def main(args: Array[String])
    {
  
        val geeksforgeeks = new GeeksforGeeks
        val author = new Author
        val geeks = new Geeks
  
        val computerscienceportal = new ComputerSciencePortal
  
    // computerscienceportal.display(geeksforgeeks)
    computerscienceportal.display(geeks)
    computerscienceportal.display(author)
    }
}

输出。

Geeks@506e1b77
Author@4fca772d

这里,Upper bound定义在ComputerSciencePortal类中,而GeeksforGeeks是Author的超级类,所以它不被接受。

例子

// Scala Program To Demonstrate Scala Upper Bound
class  Principal
class Teacher extends Principal
class Student extends Teacher
  
class School
{
    // Declaration of upper bound
    def display [T <: Teacher](t: T)
    {
        println(t)
    }
}
  
// Object created
object ScalaUpperBounds
{
    // Driver code
    def main(args: Array[String])
    {
        // Defined new variable
        val principal = new Principal
        val teacher = new Teacher
        val student = new Student
  
        val school = new School
          
        // school.display(principal)
        school.display(teacher)
        school.display(student)
  }
}

输出。

Teacher@506e1b77
Student@4fca772d

在这里,我们在班级学校中定义了上限,即[T <: Teacher],这意味着 显示 方法接受教师类对象或它的子类(即学生),这意味着教师的超类将不被接受。因此,如果教师的超类,即校长没有被评论,那么它将显示类型不匹配的错误。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程