dart基础-1

1 篇文章 0 订阅
1 篇文章 0 订阅

变量声明

  • var:可选类型,dart会自动推断它的数据类型,并不存储值,它存值的对象的引用;
  • dynamic:它实际上在运行期是一个Object
  • Object:基类

变量 -默认值

  • 没有初始化的变量自动获取一个默认值为null
  • 一切皆对象,对象的默认值为null

 

变量final和const


共同点:

  • 声明的类型可省略
  • 初始化后不能再赋值
  • 不能和var同时使用

区别

  • static const:表示静态常量

  • const与final区别:const在编译期间要确定值,final在运行时确定值

  • const定义的构造函数的类的成员变量需要用final修饰

 

函数-可选参数

定义:

//可选位置 参数
void login(int a, [int b = 5, int c = 5]) {
  print('a = $a b = $b c = $c');
}

//可选命名 参数
void login2(int a, {int b = 5, int c = 5}) {
  print('a = $a b = $b c = $c');
}

调用:

  login(22);//a
  login(22, 2); //a,b
  login(22, 2, 4);//a,b,c

  login2(1,c:2);

函数-闭包

Function makeAddFunc(int x) {
  x++;
  return (int y) => x + y;
}

main() {
  var addFunc2 = makeAddFunc(2);
  var addFunc4 = makeAddFunc(4);
  print(addFunc2(3));
  print(addFunc4(3));
}

 函数-函数别名

typedef Fun1(int a, int b);
typedef Fun2<T, K>(T a, K b);
int add(int a, int b) {
  print('a + b');
  return a + b;
}
class Demo1 {
  Demo1(int f(int a, int b), int x, int y) {
    var sum = f(x, y);
    print("sum1 = $sum");
  }
}
class Demo2 {
  Demo2(Fun1 f, int x, int y) {
    var sum = f(x, y);
    print("sum2 = $sum");
  }
}
class Demo3 {
  Demo3(Fun2<int, int> f, int x, int y) {
    var sum = f(x, y);
    print("sum3 = $sum");
  }
}

异常-Exception类型

main() {
  //异常
 try{
//    //自定义异常
  throw FormatException("格式异常");
//    throw '格式异常';
 }on FormatException{
   print('发生了格式异常');
 }catch (e,s){
//    //第一个参数是异常信息
//    //第二个参数是堆栈信息
   print(e);
   print(s);
   // rethrow ;
 }finally{
   print('end');
   Runes f;
 }
}
名称说明
DeferredLoadException延迟加载异常
FormatException格式异常
IntegerDivisionByZeroException整数除零异常
IOExceptionIO异常
IsolateSpawnException隔离产生异常
TimeoutException超时异常

 

 

 

-构造函数

 

//java中写法
class Point {
  double x;
  double y;

  Point(int x, int y) {
    this.x = x;
    this.y = y;
  }
}
//dart建议写法
class Point {
  num x;
  num y;
  Point(this.x, this.y);
}

 

//类-命名构造函数
class Point { 
  num x; 
  num y; 

  Point(this.x, this.y); 

  //命名构造函数
  Point.fromJson(Map json) { 
    x = json['x']; 
    y = json['y']; 
  } 
}
//类-重定向构造函数
class Point { 
  num x; 
  num y; 

  Point(this.x, this.y); 

  //重定向构造函数,使用冒号调用其他构造函数
  Point.alongXAxis(num x) : this(x, 0);
}
//类-调用超类构造函数
class Parent {
  int x;
  int y;

  //父类命名构造函数不会传递  
  Parent.fromJson(x, y)
      : x = x,
        y = y {
    print('父类命名构造函数');
  }
}

class Child extends Parent {
  int x;
  int y;
  //若超类没有默认构造函数, 需要手动调用超类其他构造函数
  Child(x, y) : super.fromJson(x, y) {
    //调用父类构造函数的参数无法访问 this
    print('子类构造函数');
  }

  //在构造函数的初始化列表中使用super(),需要把它放到最后
  Child.fromJson(x, y) 
	 : x = x,
	   y = y,
	   super.fromJson(x, y) {
    print('子类命名构造函数');
  }
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值