颤振/飞镖中的元组列表

Posted

技术标签:

【中文标题】颤振/飞镖中的元组列表【英文标题】:List of tuples in flutter/dart 【发布时间】:2021-01-24 16:24:39 【问题描述】:

我想在 dart/flutter 中有一个元组列表,循环遍历它们并读取第一个和第二个变量。有一个 pub.dev package 在颤动中创建一个元组。 飞镖还有其他方法吗?我需要像flutter包那样使用类来创建元组吗?

我开始在dart pad创建例子

void main() 
  List testList = [("a",1),("b",2),("c",3),("d",4),("e",5)];
  
  
  for (var i = 0; i < 5; i++) 
    print('hello $i');
    currentItem = testList[i];

  

【问题讨论】:

您不能在 dartpad 中安装/使用 pub.dev 包。在您的本地 sdk 安装中试用它们。 问题更笼统地说,没有这个包是否可以做到。以及它在颤动中的样子。这不是 dartpad 的问题 @happy_san 我不明白为什么使用这个包是一个要求。正如您的链接问题所暗示的那样,List 有什么问题? @Uwe.Schneider 你能谈谈我以前的 cmets 吗? @ChristopherMoore List 是具有同质类型的元素的集合(如果元素不是同一类型,则最终将是 Object)。元组是具有异构类型的元素的集合。如果只有两个元素,Map 可以替代。 【参考方案1】:

如果你想使用package:tuple,你可以这样做:

void main() 
  var testList = <Tuple2<String, int>>[
    Tuple2("a", 1),
    Tuple2("b", 2),
    Tuple2("c", 3),
    Tuple2("d", 4),
    Tuple2("e", 5),
  ];
  
  for (var tuple in testList) 
    print('current tuple: ($tuple.item1, $tuple,item2)');
  

【讨论】:

【参考方案2】:

如何使用Map 作为数据结构来迭代数据对的示例:

void main() 
  final testMap = "a": 1, "b": 2, "c": 3, "d": 4, "e": 5;

  for (final mapEntry in testMap.entries) 
    final key = mapEntry.key;
    final value = mapEntry.value;

    print('Key: $key, Value: $value');
    // Key: a, Value: 1
    // Key: b, Value: 2
    // Key: c, Value: 3
    // Key: d, Value: 4
    // Key: e, Value: 5
  

你也可以很容易地引入你自己的 Pair 类,它允许你将两个对象绑定在一起:

class Pair<T1, T2> 
  final T1 a;
  final T2 b;

  Pair(this.a, this.b);


void main() 
  final testList = [
    Pair("a", 1),
    Pair("b", 2),
    Pair("c", 3),
    Pair("d", 4),
    Pair("e", 5)
  ];

  for (final pair in testList) 
    print('$pair.a -> $pair.b');
  
  // a -> 1
  // b -> 2
  // c -> 3
  // d -> 4
  // e -> 5

在大多数情况下,我会建议您针对您的特定需求创建 class,因为这样可以更轻松地编写类型安全的代码。

【讨论】:

已经有MapEntry,和上面的Pair基本一样。 @wu-lee 是的,但是仅仅因为我们有一个具有类似行为的类,所以没有理由将它用于它不打算用于的目的(MapEntry 的文档说:“表示Map 中的条目的键/值对。”)。每次你想让一个方法返回两个值时,在你的代码周围使用MapEntry 会很奇怪。但应该注意的是,我已经在我的第一个示例中隐式使用了MapEntry,因为这是我们从testMap.entries 得到的。但这也很有意义,因为我在这里使用Map

以上是关于颤振/飞镖中的元组列表的主要内容,如果未能解决你的问题,请参考以下文章

如何对实例类列表进行排序取决于其在飞镖或颤振中的属性[重复]

在颤振飞镖中的 List<Map> 内搜索?

在你的颤振项目中找不到颤振 sdk 中的飞镖?

如何比较和搜索列表中的元素与列表 SML 中的元组

Python中的元组(Tuple)

列表理解列表中的元组列表