Dart语言学习

Dart语言学习

1.Hello Word

void main() {
  print('hello world!');
}

2.变量和常量

2.1 定义变量

通过var关键字定义变量:

var v ;

2.2 变量初始值

所有未初始化的变量的值都为null,dart中所有能够使用变量引用的都是对象!

2.3 可选类型

在定义变量的时候可以指定其具体类型:
num类

  • int:整数值,其取值通常位于 -253 和 253 之间。int i = 0;
  • double: (双精度) 浮点数,符合 IEEE 754 标准。double d = 1.0;

String类
String:可以用单引号/双引号/三引号(代格式)定义创建字符串文本

String s = '单引号文本';
String s1 = "双引号文本";
String s = '''a
    b
        c
            d''';
#### 2.3.1 在字符串中引用变量值
```js
String s = '12';
String s = 'abc${s}'; // abc12

布尔值
bool:true/false

列表
集合:

var list  = [1, 'a', true];

Map:

var gifts = {
    2 : 'a',
    "ab" : 12
  };
  print(gifts[2]);
  print(gifts['ab']);

常量

常量可以通过或者constfinal来定义!

const c1 = '1';
final a = '2';

3.方法

3.1 定义和调用方法

void main() {
    add();
}

add() {
  print("hello world");
}

3.2 如果方法中只有一条语句可以省略

所有方法都有返回值,如果没有显示指定,默认返回null.

void main() =>  add();
add() => print("hello world");

3.3 方法返回值

void main() {
  var r = add();
  print(r);
}

add () {
  return 1 + 2;
}

3.4 定义方法返回值类型

void main() {
  var r = add();
  print(r);
}

int add () {
  return 1 + 2;
}

3.5 方法参数

main() {
  var r  = add(1, 3);
  print(r);
}

 add(a, b) => a + b;

3.6 方法参数指定类型

main() {
  var r  = add(1, 3.2);
  print(r);
}

 add(double a, double b) => a + b;

3.7 命名参数

通过{}指定参数命名,如{double a, double b},在传入参数的时候就可以指定ab的值,该类型参数只能存在于函数参数列表最后!

main() {
  var r  = add(2, b: 1, a: 3.2);
  print(r);
}

 add(c, {double a, double b}) => c +a + b;

3.8 可选位置参数

[]定义可选参数,该参数可以不传参数.

main() {
  fun(1);
  fun(2, '3');
}

 fun(c, [String s]) {
    if (s == null) {
      print(c);
    } else {
      print(s);
    }
 }

3.9 参数默认值

main() {
  fun(c: 1);
}

 fun({c = 0, a = 'a'}) {
   // ....
 }

3.10 方法作为参数传递

main() {
  fun1(fun2);
}

fun1(a) {
 a();
}

fun2() {
  print('object');
}

3.11 匿名方法

main() {
  var list = [1, 3, 5, 6];
  list.forEach((f) => print(f)) ;
}

4.类

4.1 定义一个并实例化

main() {

  var p = new Point();
  p.x = 1;
  p.y = 2;
  print(p);

}

class Point {
  num x;
  num y;
  @override
  String toString() {
    return 'x:${x}, y:${y}';
  }
}

4.2 避免null调用报错

定义一个变量p1,p1并没有被初始化,所以为null,如果直接用p1.y肯定要报错,这时就可以用p1?.y来调用!

  var p1;
  p1?.y=4;

4.3 构造函数

main() {

  var p = new Point(1, 2);
  print(p);

}

class Point {
  num x;
  num y;

// 构造函数
  Point(this.x, this.y) ;

  @override
  String toString() {
    return 'x:${x}, y:${y}';
  }
}

4.4 命名构造函数

main() {

  var p = new Point.named1(1, 2);
  print(p);

}

class Point {
  num x;
  num y;

// 构造函数
  Point(this.x, this.y) ;

  // 命名构造函数
  Point.named1(x, y) {
    this.x = x +1;
    this.y = y - 1;
  }

  @override
  String toString() {
    return 'x:${x}, y:${y}';
  }
}

4.5调用父类构造方法


main() {

  var p = new Point1();
  print(p);

}

class Point {
  num x;
  num y;

// 构造函数
  Point(this.x, this.y) ;

  // 命名构造函数
  Point.named1(x, y) {
    this.x = x +1;
    this.y = y - 1;
  }

  @override
  String toString() {
    return 'x:${x}, y:${y}';
  }
}
class Point1 extends Point {
    
  Point1() :super(1, 2) ;
  Point1.name(x, y) : super.named1(x, y);

}

4.6 构造函数中调用其他构造函数

main() {

  var p = new Point1();
  print(p);

}

class Point {
  num x;
  num y;

// 构造函数
  Point(this.x, this.y) ;

  // 命名构造函数
  Point.named1(x, y) {
    this.x = x +1;
    this.y = y - 1;
  }

  @override
  String toString() {
    return 'x:${x}, y:${y}';
  }
}
class Point1 extends Point {
    
  Point1() :super(1, 2) ;
  Point1.name(x, y) : super.named1(x, y);
  // 调用其他构造函数
  Point1.name2(x, y) : this();

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值