微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Scala 中创建非法循环引用错误的错误是什么以及为什么是错误的?

如何解决在 Scala 中创建非法循环引用错误的错误是什么以及为什么是错误的?

我试图从基本面的角度来理解它。这个问题很幼稚,但答案会让进入 OOP 或刚接触编程范式的人更加清晰。

它从 python 开始,当我尝试使用一些 OOP 示例代码时,如下所示:

class Student(ScienceStudent):

    def __init__(self): 
        self.name = input("Enter name")
        self.age = input("Enter age")

    def put_data(self):
        print(self.name)
        print(self.age)

class ScienceStudent(Student):

    def science(self):
        print("This person kNows science")

student1 = Student()
student2 = ScienceStudent()

student1.put_data()
student2.put_data()
student2.science()
student1.science()

导致错误

Traceback (most recent call last):
File "xyz.py",line 1,in <module>
class Student(ScienceStudent):
NameError: name 'ScienceStudent' is not defined

现在我在 Scala 中做了类似的事情:

object HelloWorld extends App { 
    println("Hello,World!")    
}

class Student extends ScienceStudent {  
  def study(in: String): Boolean = {
    if (in == "y") {
      return true
    }
    else {
      return false
    }
  }  
}

class ScienceStudent extends Student {  
  def scifi(): Unit = {
    println("I kNow science")
  }
}

我得到了错误

HelloWorld.scala:20: error: illegal cyclic reference involving class Student

现在,我想听。

解决方法

Scala 中的一个具体原因(忽略在继承图中具有循环的本体含义)是扩展类 A 的类 B 的构造函数必须始终调用类 { 的构造函数{1}} 以初始化从 B 继承的 A 的任何状态。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。