0

关于Dart的一些知识点

 1 year ago
source link: https://blog.51cto.com/u_15777557/5723694
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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是类型转换操作符,也就是常说的强制转换。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK