如何在 Dart 中使用 Switch Case 语句

我正在试图理解 Dart 的开关是如何工作的,我有一个非常简单的代码:

methodname(num radians) {
switch (radians) {
case 0:
// do something
break;
case PI:
// do something else
break;
}
}

不幸的是,这不起作用。如果像这样离开,错误是: case 表达式必须具有相同的类型(我认为类型是 num,但不是编辑器)。 如果我把0改为0.0,它说: 开关类型表达式 double 不能覆盖 = = 操作符-我不知道这是什么意思!

那么怎么处理这个交换案件呢?我可以打开它的 if/else 可能,但我想知道如何使开关工作,为什么它不工作摆在首位。

我正在运行 DartEditor 的最新稳定版本。

148429 次浏览

使用’= =’比较双重值是不太可靠的,应该避免(不仅在 Dart 中,而且在大多数语言中)。

你可以这么做

methodname(num radians) {
// you can adjust this values according to your accuracy requirements
const myPI = 3142;
int r = (radians * 1000).round();


switch (r) {
case 0:
// do something
break;
case myPI:
// do something else
break;
}
}

这个问题包含一些你可能感兴趣的附加信息

更多信息:

下面是 Dart 中开关箱的例子。

问: 编写一个程序来打印给定数字的乘法表。 接受用户输入并显示其乘法表

import 'dart:io';


void main(List<String> args) {
print('enter a number from 1 to 7');


var input = stdin.readLineSync();


int day = int.parse(input!);


switch (day) {
case 1:
print('Sunday');
break;


case 2:
print('Monday');
break;


case 3:
print('Tuesday');
break;


case 4:
print('Wednesday');
break;
case 5:
print('Thursday');
break;


case 6:
print('Friday');
break;
case 7:
print('Saturday');
break;
default:
print(' invalid entry');
}
}