likes
comments
collection
share

Flutter学习-04-dart语法学习之类方法和对象操作符

作者站长头像
站长
· 阅读数 0
  • dart的类方法和对象操作符

1.类的方法

class staticClass{
  //静态属性
  static int count = 0;
  //静态方法
  static int sum(int a){
    return count + a;
  }

}

我们定义一个类,定义它的静态方法也就是我们iOS中的类方法

void staticDemo(){
  staticClass.count = 2;
  var sum = staticClass.sum(10);
  print(sum);
}

直接调用即可

Flutter学习-04-dart语法学习之类方法和对象操作符 我们不能在静态方法中访问非静态变量,很好理解,我们相当于类方法调用了实例对象的属性变量,找个时候还没有实例化所以报错。

class staticClass{
  //静态属性
  static int count = 0;
  int num = 1;
  //静态方法
  static int sum(int a){
    return count + a ;
  }
  // 实例方法
  int sum1(int a){
    return count +a +num;
  }
}

我们调用的时候,修改了类的静态成员变量,因为静态成员变量在整个内存中只有一份,只有在一处被修改,全局都会被修改

void main(List<String> arguments) {
  print('Hello world!');

  staticDemo();//给count赋值为2了
  print(staticClass.count);//2
  print(staticClass.sum(20));//22
}
void staticDemo(){
  staticClass.count = 2;
  var sum = staticClass.sum(10);//12
  print(sum);
}

2. 对象的操作符

void staticDemo(){

  var class1;
  class1 = staticClass();
  print(class1.num);
  class1 = null;
  print(class1.num);
}

我们运行demo,结果报错

Flutter学习-04-dart语法学习之类方法和对象操作符 因为我们把对象置空,之后再访问对象的属性,就会报错,我们为了避免这个问题。可以使用来进行判断即可

void staticDemo(){

  var class1;
  class1 = staticClass();
  print(class1.num);
  class1 = null;
  print(class1?.num);
}

再次运行,返回为null

Flutter学习-04-dart语法学习之类方法和对象操作符

  • 强制类型转换
void staticDemo(){

  var class1 = Object();
  class1 = staticClass();
  print(class1.num);
}

这样写的话由于不会强制转换,虽然我们的staticClass继承于Object,但是并没有num的属性,所以无法进行识别,这时候我们就要强转一下,这种情形在iOS中很常见,我们一些基类,赋值后强转我们要的类型。

print((class1 as staticClass).num);

我们这个时候如果再次给class1置空,这个时候直接报错 Objcet 对象不可为空Flutter学习-04-dart语法学习之类方法和对象操作符

我们可以使用is进行判读

if(class1 is staticClass){
  print(class1.num);
}

3. 链式语法

在dart中可以使用.. 返回的是对象本身,这样我们就可以直接调用他的属性方法了。

void staticDemo(){

  var class1 = Object();
  class1 = staticClass();
  print((class1 as staticClass).num);
  if(class1 is staticClass){
    print(class1.num);
    var count = 
      class1
      ..num = 11
      ..sum1(20);
    print(count);
  }
  // print(class1?.num);

Flutter学习-04-dart语法学习之类方法和对象操作符