$符号
Dart 中可以在字符串通过$variableName或 ${expression} 语法插入变量,类似shell脚本
例如
var s = "hello"; print('${s}, world!'); //可以简化成: print('$s, world!'); //调用方法 print('${s.toUpperCase()}, world!');
==可以直接用来比较字符串
Dart 可以直接通过==来比较字符串:
var s1 = "hello"; var s2 = "HELLO"; assert(s1.toUpperCase() == s2);
注意:
在Dart的条件语句if和assert表达式里面,它们的值必须是bool类型,这点和 JavaScript 不同。
implements和extends以及mixin的区别
继承 ---- extends
典型的面向对象的继承,用于扩展父类;
class B extends A { } , 不强制覆写每一个父类中的方法(getter,setter 必须覆写);
在 Dart 只能继承一个类
接口 ---- interface
当你不想提供方法的实现而只想提供它们的 API 时,使用接口;
class C implements B { },你必须覆写B中所有的方法;
implements 可以扩展到多个类
混入 ---- mixin
共享相同逻辑的代码段;
class B with A { }, 在B中你可以使用A的所有方法,可以通过 on 关键字限制 mixin 的使用范围;
with 可以扩展到多个 mixin
… 级联操作
作用
可以让你在同一个对象上连续调用多个对象的变量或方法,如下面的例子:
class Person { var name; var age; var gender="man"; Person(this.name, this.age); Person.genderNew(this.name, this.age,this.gender); printInfo() { print("${this.name},${this.age},${this.gender}"); } } main() { var p = new Person.genderNew('A', 20,"woman"); p.printInfo(); //下面为级联操作 p ..name = "B" ..age = 30 ..gender = "man" ..printInfo() ..name = "C" ..printInfo(); }
运行结果如下:
A,20,woman B,30,man C,30,man
$符号
Dart 中可以在字符串通过$variableName或 ${expression} 语法插入变量,类似shell脚本
例如
var s = "hello"; print('${s}, world!'); //可以简化成: print('$s, world!'); //调用方法 print('${s.toUpperCase()}, world!');
==可以直接用来比较字符串
Dart 可以直接通过==来比较字符串:
var s1 = "hello"; var s2 = "HELLO"; assert(s1.toUpperCase() == s2);
注意:
在Dart的条件语句if和assert表达式里面,它们的值必须是bool类型,这点和 JavaScript 不同。
implements和extends以及mixin的区别
继承 ---- extends
典型的面向对象的继承,用于扩展父类;
class B extends A { } , 不强制覆写每一个父类中的方法(getter,setter 必须覆写);
在 Dart 只能继承一个类
接口 ---- interface
当你不想提供方法的实现而只想提供它们的 API 时,使用接口;
class C implements B { },你必须覆写B中所有的方法;
implements 可以扩展到多个类
混入 ---- mixin
共享相同逻辑的代码段;
class B with A { }, 在B中你可以使用A的所有方法,可以通过 on 关键字限制 mixin 的使用范围;
with 可以扩展到多个 mixin
… 级联操作
作用
可以让你在同一个对象上连续调用多个对象的变量或方法,如下面的例子:
class Person { var name; var age; var gender="man"; Person(this.name, this.age); Person.genderNew(this.name, this.age,this.gender); printInfo() { print("${this.name},${this.age},${this.gender}"); } } main() { var p = new Person.genderNew('A', 20,"woman"); p.printInfo(); //下面为级联操作 p ..name = "B" ..age = 30 ..gender = "man" ..printInfo() ..name = "C" ..printInfo(); }
运行结果如下:
A,20,woman B,30,man C,30,man
is as
其中is是类型判断操作符,而as是类型转换操作符,也就是常说的强制转换。