Compiler construction 为什么会有特别的;密封的;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

Dart中似乎有一些特殊类,如
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语言更清晰、更好,请在这个官方位置上留下你的评论

    后记:

    • 这不是灵活性,而是决策的粗糙性(关于语言设计及其环境的实现)

    实际上,您为什么要扩展num?您真的不明白吗?我不想要扩展数。我想要有这个功能将是一个公共的。此功能称为封闭(密封,最终)类。我想在Dart中声明不能扩展的最终类。你真的不明白这个问题吗?@mezoni看起来这个问题得到了很多反对票,所以我试图整理一下,总结一下你的观点——但我没有答案给你。当然,如果您觉得我没有正确捕获您的问题,请随时恢复我的部分或全部编辑。您可以为您的部分问题找到一些解释,尽管这似乎不会给您带来多少安慰。