gpt4 book ai didi

dart - 如何在 Dart 2 中将 List 更改为 List

转载 作者:行者123 更新时间:2023-12-02 20:52:17 24 4
gpt4 key购买 nike

我有一个List<String>我需要将其更改为 List<dynamic>在 Dart 2 中。

首先,我尝试了这段代码,但它不起作用:

var str_list = ["aa", "bb"];

// fails - is not dynamic
// gives List<String>
List<dynamic> target_list_0 = str_list;

后来我尝试了这两种方法:

// succeeds - is dynamic
// gives List<dynamic>
var target_list_1 = [] + str_list;

// succeeds - is dynamic
// gives List<dynamic>
var target_list_2 = List<dynamic>.from(str_list);

它有效,但我不确定这是解决问题的最佳(或惯用)方法。我想尽可能干净地编写我的 Dart-2 代码,你能帮忙吗?

编辑

@matanlurey 询问了清楚的例子,这种模式在哪里是必要的,以及我如何使用它。

我正在开发类似 Twitter 的东西,但更复杂(不仅是 #hashtags 和 @mentions,还有具有内部结构的单词)。因此,我对源文本进行了一些修改,然后用空格(或括号)将其分割为单词,然后逐字检查。如果这个词很特殊,我会将字符串更改为 map (包含解析的信息)。更改发生在列表中。这就是我需要的地方 dynamic 。我有这个源代码:

var split_regexp = new RegExp(r"[^\s\(\)]+|[\s\(\)]+");
var body_matches = split_regexp.allMatches(body_part);

var body = [] + body_matches.map(
(m) => m.group(0)
).toList();

// ... processing it ...

目前,我正在从 javascript 重写它(我从 python 重写它)。两种语言都能够捕获我分割单词的文本,这要容易得多:

// python
body = re.split(r"([\s\(\)]+)", body)

// javascript
body = body.split(/([\s\(\)]+)/g)

用 Dart 可以写得这么简单吗?我认为不是 - 因为我需要分隔符空白(或分隔符括号或我的应用程序的 future 版本中的任何内容)和 dart split没有捕获它。

最佳答案

List.from(...)今天将是最惯用的方式。事实上,the style guide now recommends it如果您尝试更改现有列表的类型:

// If you want to change the type, then calling List.from() is useful:

var numbers = [1, 2.3, 4]; // List<num>.
numbers.removeAt(1); // Now it only contains integers.
var ints = new List<int>.from(numbers);

as clean as possible

可能您想要 List<dynamic>无论如何,在这种情况下。如果您能给出清楚的示例,说明此模式是必要的以及如何使用它,这可能会有所帮助。

关于dart - 如何在 Dart 2 中将 List<String> 更改为 List<dynamic>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50252532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com