Dart 中的解构未按预期工作

问题描述 投票:0回答:1

我正在经历语言之旅,并且主要来自 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

dart destructuring
1个回答
0
投票

为了解构记录,左侧的模式必须与记录匹配:

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"
  
}

有关更多信息,请参阅记录和模式

© www.soinside.com 2019 - 2024. All rights reserved.