Stay hungry Stay foolish

Dart basic concepts

Posted on By Will Lee

Dart的一些概念


  • 每个变量都是一个对象
  • Dart在运行前解析所有代码
  • Dart支持类和对象里的函数,可以在函数里面创建函数
  • 支持顶级变量,以及依赖于类或对象的变量
  • 与java 不同,Dart不具备关键字public,protected和private。如果一个标识符以下划线(_)开始,那么他和他的库都是私有的
  • Dart有两种运行模式:生产(production)和检查(checked)。我们建议在检查模式开发和调试,并将其部署到生产模式。
  • Production mode是Dart程序一个速度优化的默认运行模式。Production mode忽略断言语句和静态类型。

Dart内置标识符

为了方便javascript向Dart的移植

Dart函数

=> 表达式;语法是{ return 表达式 }的简写。在printNumber()方法中,这个表达式调用了顶级函数print()。

void printNumber(num number) =>
     print('The number is $number.');

可选参数

可选参数可以是可选位置参数或者可选命名参数,但不能既是可选位置参数又是可选命名参数。

这两种可选参数都可以定义默认值。但是默认值必须是编译时的常量,比如字面值。如果没有为之提供默认值,那么该参数的默认值将会是 null。

  • 可选命名参数


/// 把 bold 和 hidden 作为参数的值,并将默认值设为 false
enableFlags({bool bold: false, bool hidden: false}) {
     // ...
}

// bold 将会是 true, hidden 则是false
enableFlags(bold:true);

  • 可选位置参数

String say(String from, String msg,
     [String device = 'carrier', String mood]) {
     var result = '$from says $msg';
     if (device != null) {
         result = '$result (in a $mood mood)';
     }
     return result;
}

assert(say('Bob', 'Howdy') == 
     'Bob says Howdy with a carrier pigeon');

级联操作符

querySelector('#button') // Get an object.
  ..text = 'Confirm'   // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

等于

var button = querySelector('#button');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));