这是一个代码:
const bool a = const bool.fromEnvironment("true");
print(a); // false
是,默认情况下默认值为false。在不使用默认值的情况下,a
为真该怎么办?字符串参数是什么?也许是钥匙吗?
答案 0 :(得分:1)
您要达到什么目标?
可以将a
设置为const a = true;
。
通过bool.fromEnvironment
函数,您可以查找已定义的命名字符串属性,这些属性可以在编译时在命令行中添加,也可以由您在其中编译/运行的平台定义。 String.fromEnvironment
和int.fromEnvironment
也是如此。
一组这样的平台属性是dart.library.*
,对于平台支持的每个true
库,这些属性都设置为dart:*
。
因此,要打印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
独立VM为例。编写以下脚本script.dart
:
void main() {
print(const bool.fromEnvironment("my-fancy-thing"));
}
如果您以dart script.dart
的身份运行,则会显示false
。
如果您以dart -Dmy-fancy-thing=true script.dart
的身份运行,则会显示true
。