下面是一个带有Switch语句的简单DART程序.
void main() {
var list = [1, 2];
var set = <int>{1, 2};
var map = <int, int> {1: 2, 3: 4};
switch (list) {
case 1:
print(1);
break;
case [1, 2]:
print(2);
break;
case const <int> {1, 2}:
print(3);
break;
case <int, int>{1: 2, 3: 4}:
print(4);
break;
}
}
正如我在DART Lang中所理解的,switch
语句并不是针对每个 case 判断==
,而是进行模式匹配.
在上面的代码中,当表达式为switch(list)
时,控制台打印2
.当它为switch(set)
时,控制台不打印任何内容,而对于switch(map)
,控制台打印4
.
问题:
- 为什么当表达式为
switch(set)
时,switch 不打印3
? - 为什么
Set
需要const
,而List
和Map
不需要? 如果在设置的情况下删除const
,我会收到一条错误消息:
常量模式的表达式必须是有效的常量.