为什么Ruby不支持抽象类?

时间:2012-11-09 15:21:54

标签: ruby

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

我与Ruby合作约4年。我真的还不明白为什么Ruby没有抽象类的本机实现?有时候,一个好的应用程序设计真的是必要的。我和其他开发人员一次又一次地使用“NoImplementedError”清空方法,但我感觉不太好。

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

1 个答案:

答案 0 :(得分:3)

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

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

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