gpt4 book ai didi

dart - Dart 中字符串表达式的不可理解行为

转载 作者:行者123 更新时间:2023-12-04 23:06:32 29 4
gpt4 key购买 nike

今天我决定开始学习 Dart 语言,我从 Tour 开始,那里有一个例子:

// These work in a const string.
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';

// These do NOT work in a const string.
var aNum = 0;
var aBool = true;
var aString = 'a string';
const aConstList = [1, 2, 3];

const validConstString = '$aConstNum $aConstBool $aConstString';
// const invalidConstString = '$aNum $aBool $aString $aConstList';

和文本:

Literal strings are compile-time constants, as long as any interpolated expression is a compile-time constant that evaluates to null or a numeric, string, or boolean value.

我的问题与代码的最后一行有关。我已经阅读了几次文本,但我不明白为什么表达式 ('$aNum $aBool $aString $aConstList') 的结果不能分配给 const 变量。但是,如果我这样更改代码:

const validConstString = '$aConstNum $aConstBool $aConstString';
var validString = '$aNum $aBool $aString $aConstList';

它会起作用的。这些插值表达式之间有什么不同?我试图通过调试器查看结果:

enter image description here

我一直看到这两个变量具有相同类型的数据。它只是字符串。

最佳答案

这里

const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';

您正在声明常量值。它们不会在运行时更改,因此您知道在编译时该值将始终相同。因此,您可以在编译时将生成的字符串声明为 const。

const validConstString = '$aConstNum $aConstBool $aConstString';

这里

var aNum = 0;
var aBool = true;
var aString = 'a string';

您将变量声明为 var。它们可以在运行时更改它们的值,因此即使您分配了初始值,您也无法在编译时说明它们在应用程序生命周期内的值是多少。

这就是您将结果字符串声明为 var 的原因。

var validString = '$aNum $aBool $aString $aConstList';

两个结果变量都是字符串,但第一个变量在应用程序的整个生命周期内都是不变的,而第二个变量会随着各个变量的变化而变化。

关于dart - Dart 中字符串表达式的不可理解行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53216704/

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