美文网首页
Dart 笔记 10 - 类(3)

Dart 笔记 10 - 类(3)

作者: 三流之路 | 来源:发表于2019-01-16 18:46 被阅读0次

特殊类

枚举

enum Color { red, green, blue }

枚举中的每个值都有一个 index 属性,并且提供 getter 方法,它返回声明时值的索引,从 0 开始。

assert(Color.red.index == 0);
assert(Color.green.index == 1);
assert(Color.blue.index == 2);

values 属性获取所有值的列表

List<Color> colors = Color.values;
assert(colors[2] == Color.blue);

可以在 switch 语句中使用 enum,如果 switch 的 case 不处理 enum 的所有值,将会报一个警告消息:

var aColor = Color.blue;

switch (aColor) {
  case Color.red:
    print('Red as roses!');
    break;
  case Color.green:
    print('Green as grass!');
    break;
  default: // Without this, you see a WARNING.
    print(aColor); // 'Color.blue'
}

可调用的类

实现 call() 方法可以让类像函数一样被调用。

WannabeFunction 类定义了一个 call() 函数,该函数接受三个字符串并将它们连接起来,每个字符串用空格分隔,并在结尾加一个感叹号。

class WannabeFunction {
  call(String a, String b, String c) => '$a $b $c!';
}

main() {
  var wf = WannabeFunction();
  // 像函数一直执行,其实就是省略了 .call
  var out = wf("Hi", "there,", "gang");
  print('$out'); // Hi there, gang!
}

静态

静态变量和方法整个文件内可见。一般优先使用顶级函数。

import 'dart:math';

class Queue {
  static const initialCapacity = 16;
}

class Point {
  num x, y;
  Point(this.x, this.y);

  static num distanceBetween(Point a, Point b) {
    var dx = a.x - b.x;
    var dy = a.y - b.y;
    return sqrt(dx * dx + dy * dy);
  }
}

void main() {
  assert(Queue.initialCapacity == 16);

  var a = Point(2, 2);
  var b = Point(4, 4);
  var distance = Point.distanceBetween(a, b);
  assert(2.8 < distance && distance < 2.9);
  print(distance);
}

比较对象

实现 Comparable 接口,以指示一个对象可以与另一个对象进行比较,通常用于排序。compareTo() 方法返回值表示大小关系:<0 表示更小,=0 表示相等,>0 表示更大。

class Line implements Comparable<Line> {
  final int length;
  const Line(this.length);

  @override
  int compareTo(Line other) => length - other.length;
}

void main() {
  var short = const Line(1);
  var long = const Line(100);
  assert(short.compareTo(long) < 0);
}

相关文章

  • Dart 笔记 10 - 类(3)

    特殊类 枚举 枚举中的每个值都有一个 index 属性,并且提供 getter 方法,它返回声明时值的索引,从 0...

  • 09Dart语言基础-继承与多态

    1.继承 main.dart person.dart student.dart 2.抽象类与接口 3.Mixin混...

  • Flutter/Dart - Dart中的抽象类 多态 和接口

    Dart中的抽象类 Dart中的抽象类: Dart抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口...

  • Dart 笔记 9 - 类(2)

    抽象类 加 abstract 关键字,抽象方法没有实现体,不需要 abstract 关键字。 隐式接口 每个类都隐...

  • Dart 笔记 8 - 类(1)

    Dart 是一种面向对象的语言,具有类和基于 mixin 的继承。每个对象都是一个类的实例,所有的类都是 Obje...

  • Dart基础3-类

    1 构造函数 不要键入初始化的形式 空的构造函数体使用;而不是{} 不要使用new 不要过多使用const上面的说...

  • Dart语言笔记(二)

    Dart语言笔记(一)[https://www.jianshu.com/p/7c34fb53e25a] 1.类 使...

  • Flutter学习资料

    一、Dart学习资料 1.语言 Dart编程中文语言网 Dart学习笔记 极客学院Dart教程汇总 为 Java ...

  • Dart --类

    类概述 普通类变量实例变量(创建对象后,使用 对象.变量名 调用)静态变量(用static修饰,使用 类...

  • Dart 类

    定义一个类 -> 如果想定义一个私有属性,那么加上_ ,「dart里面没有重载函数」如果想用,那么 类名.xxx ...

网友评论

      本文标题:Dart 笔记 10 - 类(3)

      本文链接:https://www.haomeiwen.com/subject/zlqvdqtx.html