Table of Content
            
                
  
            
        
        
        
        Dart 语言整体上与 C++、Java 类似, 当然也有一些细节需要注意区分。
操作符
取整
操作符 ~/ 应该是很少见的一种写法:
int a = 3;
int b = 2;
print(a ~/ b); // 输出 1
级联
当你要对同一个对象进行一系列操作调用时, 使用 .. 操作符连接:
class Person {
    String name;
    String country;
    void setCountry(String country) {
      this.country = country;
    }
    String toString() => 'Name: $name\nCountry: $country';
}
void main() {
  Person p = new Person();
  p ..name = 'Ezra'
    ..setCountry('China');
  print(p);
}
流程控制
if
if 语句与大多数语言基本一致, 判断的条件为逻辑布尔值。
if (i < 0) {
  print('i < 0');
} else if(i == 0) {
  print('i = 0');
} else {
  print('i > 0');
}
在检查模式下, 对非布尔值进行判断会报错, 生产模式下则会当做 false 处理。
你可以通过 == null 来判断一个非布尔值是否为 null。
for
for 循环也与大多数语言基本一致。
for (int i = 0; i < 3; i++) {
  print(i);
}
对于容器, 可以使用 forEach 及 for-in:
var collection = [0, 1, 2];
collection.forEach((x) => print(x)); // forEach 的参数为 Function
for (var x in collection) {
  print(x);
}
while/do-while
while (boolean) {
  // ...
}
do {
  // ...
} while (boolean)
switch-case
switch 的参数可以是数值或字符串:
var command = 'OPEN';
switch (command) {
  case 'CLOSED':
    // ...
    break;
  case 'OPEN':
    // ...
    break;
  default:
    print('Default');
}
break/fall-through
当一个 case 语句后没有代码, 则可以省略 break, 自动 fall-through 到下一个 case; 但如果 case 语句后有任何代码, 必须添加 break。
continue
当一个 case 后有代码需要执行, 你仍旧希望 fall-through 到其他 case 时, 使用 continue LABEL 语法:
var command = 'CLOSED';
switch (command) {
  case 'CLOSED':
    print('CLOSED');
    continue nowClosed; // 继续执行 nowClosed 位置后的 case
  case 'OPEN':
    print('OPEN');
    break;
  nowClosed: // 此标签后的 NOW_CLOSED case 将通过前面 continue nowClosed 继续执行
  case 'NOW_CLOSED':
    print('NOW_CLOSED');
    break;
}
try-catch-finally
与大多数语言不同的是, Dart 中除了 Exception 与 Error 外, 还可以抛出非空对象作为异常。
throw new ExpectException('值必须大于 0!');
throw '值必须大于 0!';
你可以抛出多种类型的异常, 将被第一个捕获的 catch 进行处理。如果 catch 语句没有指定要接收的异常类型, 则会接收所有类型。
try {
    throw 'This an Exception!';
} on Exception catch(e) { // 指定类型
  print('Unknown exception: $e');
} catch(e) { // 不指定类型
  print('Unknown type: $e');
}
在此基础上, 你还可以添加 finally 语句, 不论异常是否产生都会被执行:
try {
    throw 'This an Exception!';
} catch(e) {
  print('Catch Exception: $e');
} finally {
  print('Close');
}
 李二狗 — @Meniny
                李二狗 — @Meniny
             
            
             
                 
                