gpt4 book ai didi

dart,是否可以在库加载时执行代码?

转载 作者:行者123 更新时间:2023-12-02 01:44:27 26 4
gpt4 key购买 nike

我的 lib/sndbx.dart 文件中有一个库:

library sndbx;

bool foo(){
print('hey hey!');
return true;
}

bool bar = foo();

我的 bin/sndbx_cmd.dart 中有一个 main:

import 'package:sndbx_cmd/sndbx.dart';

void main() {
print("Hello, World!");
}

但我没有看到“嘿嘿!”打印到命令行,为什么加载库时它没有定义顶级 bool 变量 bar

我看到如果我得到 bar 值:

import 'package:sndbx_cmd/sndbx.dart';

void main() {
print("Hello, World!");
print(bar);
print(bar);
}

我得到:

Hello World!
hey hey!
true
true

那么为什么它只调用一次 foo 呢?如果我将其更改为:

library sndbx;

bool called = false;

bool foo(){
print('hey hey!');
return called = !called;
}

bool bar = foo();

因为 bar 没有在项目加载时定义,所以感觉它就像一个 getter,但它只在第一次调用时获取值,并且在我期望的位置之后将值缓存在那里每次我访问它时都继续调用 foo,因为这是它在第一次访问时所做的,而不是在最初加载库时定义的。

最佳答案

如果您希望每次阅读它时都调用它,您实际上可以使用它来制作 setter/getter 。

bar 是延迟计算的(在第一次访问时)。

据我所知,没有办法在库加载时执行代码。您必须从 main() 调用它(或者当然是调用表单 main() 的方法)。

关于dart,是否可以在库加载时执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26546974/

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