gpt4 book ai didi

dart - 从任意文件导入类

转载 作者:行者123 更新时间:2023-12-03 04:17:00 27 4
gpt4 key购买 nike

假设global_bin是程序包的/ bin文件,该文件通过

pub global activate global_bin

我需要global_bin在执行它的目录中的包中搜索一个包含类定义的文件,然后实例化它。

即:
// $HOME/package/lib/class.dart
class Clazz{
int number = 42;
}

然后在命令行中:
cd $HOME/package
global_bin --echo number
# 42

最佳答案

您不能在同一隔离中加载任意库。需要探索的两件事:

1)使用https://api.dartlang.org/stable/1.23.0/dart-isolate/Isolate/spawnUri.html生成一个新的隔离对象-您为spawnUri提供了一个新的入口点,该入口点可以在任何文件中,并且可以加载新的dart代码。

2)听起来好像您要加载尚未准备好在隔离中运行的代码-没有自己的“main”方法。因此,您将不得不生成代码。在您的示例中,您将需要生成导入Clazz的代码,导入将按名称查找符号的引擎,然后运行它:

import 'package:foo/class.dart';
import 'package:global_bin/runner.dart' as runner;

void main() {
runner.run();
}

现在您的Runner.dart可以使用镜子找到class.dart并进行检查。

最后,要实际查找文件,您可以使用dart的标准文件功能,即dart:io。

关于dart - 从任意文件导入类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44376953/

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