bool.fromEnvironment 总是返回 false

4

这里有一段代码:

const bool a = const bool.fromEnvironment("true");
print(a); // false

是的,默认值默认情况下为false。如果不使用默认值,我该怎么做才能使a为true?那么字符串参数是什么?它可能是一个键吗?


如果您对fromEnvironment参数不确定,您想通过fromEnvironment()实现什么? - pskink
我只是在检查 Dart 语言中的所有类、函数等。在 bool 类中,我发现了 bool.fromEnvironment,并且上面写着:“返回环境声明名称的布尔值。如果声明的值为字符串“true”,则声明的布尔值为 true;如果值为“false”,则声明的布尔值为 false。” - Daniyar Changylov
但结果总是false..无论我在fromEnvironment参数中写了什么 - Daniyar Changylov
我在调试时总是得到 false。我认为这是因为它是编译时参数。 - surga
1个回答

6

您想要实现什么目标? 将a设置为true可以通过const a = true;实现。

bool.fromEnvironment函数允许您查找已定义的命名字符串属性,这些属性可以在编译时通过命令行添加,或者可能由您正在编译/运行的平台定义。 String.fromEnvironmentint.fromEnvironment也是如此。

这样一个平台属性集合是dart.library.*,它们分别为平台支持的每个dart:*库设置为true

因此,要打印出其他值而不是false,可以执行以下操作:

print(const bool.fromEnvironment("dart.library.core"));

由于所有平台都支持dart:core,因此这一点相当无聊。 您可以通过以下方式检查其他库的可用性:

const bool supportsMirrors = bool.fromEnvironment("dart.library.mirrors");
const bool isJavaScript = bool.fromEnvironment("dart.library.js");

或者,您可以在编译时通过命令行提供值。让我们以dart独立虚拟机为例。编写以下脚本script.dart

void main() {
  print(const bool.fromEnvironment("my-fancy-thing"));
}

如果您将其作为dart script.dart运行,它会打印false。 如果您将其作为dart -Dmy-fancy-thing=true script.dart运行,它会打印true

1
哇,谢谢..即使在思想中,也没有意识到库等的含义。 - Daniyar Changylov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接