2

对不起,如果它是重复的。我发现了很多关于如何实现抽象类的帖子,但是关于为什么它们没有在 Ruby 中实现。

我与 Ruby 一起工作了大约 4 年。而且我真的还是不明白为什么 Ruby 没有抽象类的本地实现?有时它对于一个好的应用程序设计是非常必要的。我和其他开发人员一次又一次地用“NoImplementedError”做空方法,但我觉得不太好。

不支持接口和抽象类背后是否有一个棘手的意识形态?

4

1 回答 1

3

如果您正在考虑抽象类或接口,您很可能会考虑为您的代码创建某种契约。

但是,Ruby被设计为弱类型,而不是设计为静态类型语言,并且确实严重依赖鸭子类型。显然,在某些情况下执行接口检查可能非常有用(例如,以确保传递的对象将支持所有需要的方法),但它仍将在运行时完成,从而使该功能实际上无用。

据我记得,有一个打算创建一个类型化的版本,或者 Ruby 和 Dave Thomas 甚至提到了一个尝试过这个并告诉它效果不好的人:)

于 2012-11-09T15:37:54.083 回答