Compiler construction 为什么会有特别的;密封的;Dart中的课程,我如何制作这些课程?
Dart中似乎有一些特殊类,如Compiler construction 为什么会有特别的;密封的;Dart中的课程,我如何制作这些课程?,compiler-construction,programming-languages,dart,grammar,ambiguity,Compiler Construction,Programming Languages,Dart,Grammar,Ambiguity,Dart中似乎有一些特殊类,如num,这些类通常不能由用户定义的类继承,尽管Dart语法本身没有任何东西可以阻止它(如Java的final或C#的sealed)num由内置的int和double继承 为什么呢?这种限制不应该出现在语言的语法中吗 我有没有办法自己创建这样的类,这些类部分或完全“密封”在继承上 下面是一个官方答案,是关于在上发现的来自Dart团队的类似问题 吉拉德·布拉卡在这一场合说: 您几乎可以认为int、double、bool、Null和String是Java中的最终类(num
num
,这些类通常不能由用户定义的类继承,尽管Dart语法本身没有任何东西可以阻止它(如Java的final
或C#的sealed
)<但是,code>num由内置的int
和double
继承
下面是一个官方答案,是关于在上发现的来自Dart团队的类似问题 吉拉德·布拉卡在这一场合说: 您几乎可以认为int、double、bool、Null和String是Java中的最终类(num不适合这种模式,因为它有子类型)。根据设计,我们不支持最终类,以最小化复杂性并避免无法子类化的代码(如提交者所需)。我们选择了无法扩展的类型列表,而不是最终类。 原因:因为这些对效率至关重要。这不是一个非常纯粹的论点,但实际上大多数人会用灵活性换取更快的系统。 ++++++++ RE:我的评论:这真的不是一个非常纯粹的论点,因为这无助于使语言最终变得更清晰更好 ++++++++ 这也不是断章取义的话,但这是2012年6月29日的官方立场 也许今天Dart团队会有另一种解释,但只有在对所提问题的正式答复中才能提供 附言 t请联系ringstaff以获取此答案的链接 附言 如果你想让Dart语言更清晰、更好,请在这个官方位置上留下你的评论 后记:
- 这不是灵活性,而是决策的粗糙性(关于语言设计及其环境的实现)