什么是开放递归?

mis*_*tor 28 oop programming-languages scala

什么是开放递归?它是否特定于OOP?

(我碰到这个词在这条推文丹尼尔Spiewak.)

Itt*_*ayD 19

只需复制http://www.comlab.ox.ac.uk/people/ralf.hinze/talks/Open.pdf:"打开递归大多数语言与对象和类提供的另一个便利功能是一个方法体的能力通过一个名为self的特殊变量调用同一对象的另一个方法,或者在某些语言中调用它.自我的特殊行为是它是后期绑定的,允许在一个类中定义的方法调用后面定义的另一个方法,在第一个的一些子类中."

  • 是的,Python(或Ruby或C++或Smalltalk或Java或C#或......)中的常规对象方法可以展示开放递归.你可能不认为这是一个大问题,但如果你正式研究OO的语义,你会发现它实际上非常棘手. (5认同)
  • 这个答案对我来说似乎有点误导。开放递归是一个方法体调用同一对象的另一个方法的能力(相互递归定义,这就是递归的原因)**并且**允许一个类中定义的方法调用稍后在某个类的某个子类中定义的另一个方法第一个(通过打开基类的闭包并让派生类进入,以​​便基类可以看到它,例如在 C++ 中将其设为虚拟)。请参阅http://journal.stuffwithstuff.com/2013/08/26/what-is-open-recursion/,了解有关此主题的一篇写得很好的文章。 (2认同)