首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dart 2中将List<String>转换为List<dynamic>?

如何在Dart 2中将List<String>转换为List<dynamic>?
EN

Stack Overflow用户
提问于 2018-05-09 11:41:13
回答 2查看 32.5K关注 0票数 21

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

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

代码语言:javascript
复制
var str_list = ["aa", "bb"];

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

后来,我尝试了以下两种方法:

代码语言:javascript
复制
// 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的东西,但更复杂(不仅是#hashtag和@mentions,还有具有内部结构的单词)。因此,我对源文本做了一些修改,然后用空格(或括号)分割成单词,然后逐个检查。如果单词是特殊的,则将字符串更改为映射(包含已解析的信息)。这一变化正在列表中发生。那就是我需要它的地方,dynamic。我有一个源代码:

代码语言:javascript
复制
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重写它)重写它。这两种语言都能捕捉到我拆分单词的文本,这要容易得多:

代码语言:javascript
复制
// python
body = re.split(r"([\s\(\)]+)", body)

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

能用达特写得这么简单吗?我认为没有-因为我需要分隔符空格(或拆分括号或任何在我的应用程序的未来版本)和省道split没有抓住它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-09 21:08:15

今天,List.from(...)将成为最惯用的方式。实际上,如果您试图更改现有列表的类型,请使用样式指南现在推荐它。

代码语言:javascript
复制
// 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);

尽可能干净

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

票数 79
EN

Stack Overflow用户

发布于 2021-06-14 07:28:12

好的选择也是:

代码语言:javascript
复制
var numbers = [1, 4]; // List<dynamic>
var ints = numbers.map((s) => s as int).toList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50252532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档