我有一个字符串"1, 2, 3, 4, 5, 10, 23, 54"
我可以先把它转换成字符串列表
List<String> list = str.split(",");
然后我必须循环列表并将其转换为int。
是否可以将上面的字符串转换为一行中的List? in one line?
编辑1:
我试过了
List<int> ints = "1,2,3".split(",").map((i) => int.parse(i));
但我得到的'MappedListIterable〈String,int〉'不是类型'List'的子类型
编辑二:
我找到解决办法了。但我不是很清楚。
List<int> ints = "1,2,3".split(",").map((i) => int.parse(i)).toList();
这就解决了问题。但是在dart中添加toList()和不添加toList()有什么区别呢?有人能解释一下吗?
2条答案
按热度按时间cetgtptt1#
当使用Map方法时,它实际上返回一个MappedIterable(在本例中为MappedListIterable)(The documentation for this)示例而不是List,因此需要将其转换为一个list示例。
这就是为什么添加**toList()**是有效的,因为它实际上将MappedListIterable转换为List。
cdmah0mi2#
map
方法返回一个 iterable,而不是一个列表,它是 lazy,所以如果你在map(...)
后面跟.first
,它只会转换第一个元素。如果添加
.toList()
,那么您将急切地从可迭代对象中提取所有值,并创建一个包含这些值的列表,因为您要求的是列表,所以您需要这样做(可迭代对象不一定是列表)。另一句俏皮话是:
或者,您可以在JSON解码的基础上执行以下操作: