自定义接收Map参数的Dart函数:实现Map值转列表输出
修正Dart提取Map值为列表的函数
原代码存在几个问题导致无法得到预期结果:
- 函数调用与定义名称不匹配:main函数里调用
getScores,但实际定义的函数是getScoresList - 函数未返回正确列表:原函数仅打印单个值,未将所有值收集为列表返回
- 未处理
map.entries.map生成的Iterable,没有转换为可返回的List
以下是修正后的完整代码:
void main() { Map<String, int> studentMarks = { 'James': 98, 'Peter': 95, 'Alson': 77, 'Deng': 89, 'Diing': 74, 'Madunt': 99, 'Kwaje': 97 }; List<int> marks = getScores(studentMarks); print(marks); // 输出: [98, 95, 77, 89, 74, 99, 97] } List<int> getScores(Map<String, int> map) { // 提取Map所有值并转为List返回 return map.values.toList(); }
关键修改说明:
- 统一函数名称:将定义的函数改为
getScores,与main中的调用一致 - 明确类型标注:使用
Map<String, int>和List<int>替代泛型Map,让代码更清晰且类型安全 - 简化实现逻辑:直接用
map.values.toList()提取所有值并转换为列表,比遍历entries更简洁高效 - 修正返回值:函数返回
List<int>类型,确保main函数能接收并打印正确结果
内容的提问来源于stack exchange,提问作者Lemi Agrey
相关产品推荐
相关产品推荐

