我正在经历语言之旅,并且主要来自 Javascript 背景,我无法理解如何解构此记录。
(int, String, {String b, String c}) rec = (7, c:"testc", "positionaltest", b:"testb");
String (:b) = rec;
print(b); // Expecting "testb"
显然 dart 试图分配整个记录而不是解构,因为如果我尝试获取位置值,它不会抛出错误,而是将整个记录分配给变量。
(int, String, {String b, String c}) rec = (7, c:"testc", "positionaltest", b:"testb");
String (a) = rec;
print(a); // Expecting 7
到目前为止,我只到达了记录页面,这是我第一次在 Dart 中遇到解构。
为什么我的示例没有按我的预期工作,正确的方法是什么?
使用 Dart 3.4.4
为了解构记录,您必须为每个记录字段声明一个变量:
void main() {
(int, String, {String b, String c}) rec =
(7, c: "testc", "positionaltest", b: "testb");
var (i, s, :b, :c) = rec;
print(i); // Prints: 7
print(b); // Prints: "testb"
}