gpt4 book ai didi

Dart 抽象原语实现

转载 作者:行者123 更新时间:2023-12-03 04:36:25 24 4
gpt4 key购买 nike

我正在查看基本 dart 类型(double、int、String 等)的实现,我发现其中许多类是 abstract .我想知道这些类(class)是否是abstract那么哪个类实现了它们?当这些类甚至无法实例化时,如何将对象分配给特定类型?例如,double成为 abstract类我不能像实例化它

var d = double();
但那怎么办
var d = 2.5;
print(d is double);
打印 true ? Dart 怎么知道 ddouble 的对象?

最佳答案

Dart 平台库分为您正在查看的公共(public)共享代码和内部平台相关代码(“补丁文件”),它们为声明的函数提供实现 external ,并且它还提供了平台所依赖的其他内部机制(然后还有运行时系统的 native 内容)。
这些特定于平台的文件包含实现类型如 int 的类的声明。和 String .规范说你不能继承 intString ,但运行时系统无论如何都会这样做。您的“原始”对象是抽象接口(interface)的那些隐藏子类的实例。
运行时系统可以(并且确实)进一步优化其中一些类的表示。例如,VM 的子类型为 int调用Smi (“小整数”)将值存储在指针中,而不是在堆中分配对象,Web 平台实现 int作为一个普通的 JavaScript 数字。当您对它们调用方法时,它们必须特别对待这些值,因为它们的结构与其他对象不同。但这是一种优化,你可以认为这些值只是由内部隐藏类实现的。

关于Dart 抽象原语实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64017367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com