我正在经历语言之旅,并且主要来自 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");
// The pattern on the left must match the structure of the record.
// To omit variables one may use the underscore character.
var (i, _, :b, c:_) = rec;
print(i); // Prints: 7
print(b); // Prints: "testb"
}
有关更多信息,请参阅记录和模式。