Dart - 解构是允许从 for 或 if 语句构建数组的功能的名称
Dart - Is deconstruction the name of the feature that allows to build arrays from for or if statements
因为并非 dart 中的所有内容都是表达式 (Like Kotlin) 我想知道下一个代码如何运行:
示例 1
我做了一个 for 循环 returns 每个数组项,它就像一个解构,但使用了另一种语法。
void main() {
final numbers = [1, 2, 3];
final computedNumbers = [for(final n in numbers) n];
print(computedNumbers);
}
它打印:[1, 2, 3]
示例 2
在 Flutter 中,如果满足以下条件,您可以构建一个数组:
[
Text("My Text"),
// Compiles fine
if (myExpressionIsTrue) Text("Optional Text")
]
最后,如果 myExpressionIsTrue
为真,它会创建一个没有元素的“解构”数组。让我感到困惑的一件事是,如果我将 if 与 {}
放在一起,它不会编译,如下所示:
[
Text("My Text"),
if (myExpressionIsTrue) { // This fails at compile time
Text("Optional Text")
}
]
问题
问题是它如何工作,因为 if
或 for
不是表达式,允许这样做的语言功能的名称是什么?
该功能的名称是 collection for 和 collection if。见 Lists section of the Dart Language Tour.
我还强烈建议您阅读文章 Making Dart a Better Language for UI,其中讨论了该功能设计中的许多注意事项。
因为并非 dart 中的所有内容都是表达式 (Like Kotlin) 我想知道下一个代码如何运行:
示例 1
我做了一个 for 循环 returns 每个数组项,它就像一个解构,但使用了另一种语法。
void main() {
final numbers = [1, 2, 3];
final computedNumbers = [for(final n in numbers) n];
print(computedNumbers);
}
它打印:[1, 2, 3]
示例 2
在 Flutter 中,如果满足以下条件,您可以构建一个数组:
[
Text("My Text"),
// Compiles fine
if (myExpressionIsTrue) Text("Optional Text")
]
最后,如果 myExpressionIsTrue
为真,它会创建一个没有元素的“解构”数组。让我感到困惑的一件事是,如果我将 if 与 {}
放在一起,它不会编译,如下所示:
[
Text("My Text"),
if (myExpressionIsTrue) { // This fails at compile time
Text("Optional Text")
}
]
问题
问题是它如何工作,因为 if
或 for
不是表达式,允许这样做的语言功能的名称是什么?
该功能的名称是 collection for 和 collection if。见 Lists section of the Dart Language Tour.
我还强烈建议您阅读文章 Making Dart a Better Language for UI,其中讨论了该功能设计中的许多注意事项。