Map castFrom() 方法能详细说一下嘛 ?
来源:5-5 Flutter之Dart常用数据类型(Map)
慕无忌6890528
2022-01-26
我看源码内容是:
static Map<K2, V2> castFrom<K, V, K2, V2>(Map<K, V> source) =>
CastMap<K, V, K2, V2>(source);
从网上查找的资料是:
* 12. castFrom: castFrom<K, V, K2, V2>(Map<K, V> source) =>CastMap<K, V, K2, V2>(source)
* 1. 不使用类型操作符, 从另一个map中初始化新的 Map, 此时新的 Map 中含有另一个 Map 中的资源 。
* 2. 强制使用指定类型初始化 Map:
* 1. 如果类型不匹配或者不兼容就会导致程序崩溃 。```
代码示例:
// castFrom() 方法:
Map<int, String> mapCaFrom1 = {1:'a',2:'b',3:'c'};
// Map resCaFrom1 = Map.castFrom<num,String>(mapCaFrom1);
//这行代码会出错,主要原因是testMap是<dynamic,dynamic>类型的,但是这里需要的是<int,String>类型的map
// Map resCaFrom2 = Map.castFrom<String,String>(mapCaFrom1);
//这行代码也会出错,因为无法将<String,String>类型的map转换为<int,String>类型的map
Map resCaFrom3 = Map.castFrom<String,Object>(mapCaFrom1); //正确`
可是实际运行并不正确, 报错内容是:
lib/data_type_map.dart:534:26: Error: Expected 4 type arguments.
Map resCaFrom3 = Map.castFrom<String,Object>(mapCaFrom1); //正确
org-dartlang-sdk:///third_party/dart/sdk/lib/core/map.dart:171:22: Context: Found this candidate, but the arguments don’t match.
static Map<K2, V2> castFrom<K, V, K2, V2>(Map<K, V> source) =>
写回答
1回答
-
CrazyCodeBoy
2022-01-30
mapCaFrom1 在创建的时候已经指定了类型为Map<int, String>;所以在使用castFrom的时候要么不指定类型,要么类型和mapCaFrom1的一一对应。
00
相似问题