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");
  
  var (i, s, :b, :c) = rec;
  
  print(i); // Prints: 7
  print(b); // Prints: "testb"
}

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