Flutter Dart操作符

        常见的操作符大家都知道就不多介绍了,主要来看看Java所没有的。

类型判定操作符

    asis、 和 is! 操作符是在运行时判定对象 类型的操作符

操作符 解释
as 类型转换
is 如果对象是指定的类型返回 True
is! 如果对象是指定的类型返回 False

    as 操作符把对象转换为特定的类型,但是如果无法完成转换则会抛出一个异常

    is 和Java中的 instanceof 相同

void main(){
  var age = 15;
  //Age类型:int,属于String:false
  print("Age类型:${age.runtimeType},属于String:${age is String}");
  //Age类型:int,不属于String:true
  print("Age类型:${age.runtimeType},不属于String:${age is! String}");

}

赋值操作符

    =+=\=*=这些不必多说,还有一个 ??= 操作符用来指定 值为 null 的变量的值

  String? b ;
  b??="scc";
  //如果 b 是 null,则 "scc" 赋值给 b
  print(b);//scc

  b??="Dart";
  //如果不是 null,则 b 的值保持不变
  print(b);//scc

条件表达式

        Dart 有两个特殊的操作符可以用来替代 「if-else」 语句:

  • bool ? a : b (三元运算符)

    如果条件bool为真,则执行 a,否则执行 b

  • a ?? b

    如果a不为 null,则返回其值,否则返回b值。

  print(age==15?"15岁":"不是15岁");//15岁
  print(age>18?"成年了":"未成年");//未成年
  
  var name;
  //name的值null,??返回:scc
  print("name的值$name,??返回:${name??"scc"}");
  
  name = "dart";
  //name的值dart,??返回:dart
  print("name的值$name,??返回:${name??"scc"}");

级联操作符

        级联操作符 (..) 可以在「同一个对象上 连续调用多个函数以及访问成员变量」。 使用级联操作符可以避免创建 临时变量, 并且写出来的代码看起来 更加流畅:

void main(){
  User user = User();
  //姓名:scc ,年龄:15,序号:1
  print(user.toString());
  user..setName("beter")
    ..setAge(16)
    ..setId(2);
  //姓名:beter ,年龄:16,序号:2
  print(user.toString());
}
class User{
  var name = "scc";
  var age = 15;
  var id = 1;
  @override
  String toString() {
    return "姓名:$name ,年龄:$age,序号:$id";
  }
  void setName(String name){
    this.name = name;
  }
  void setAge(int age){
    this.age = age;
  }
  void setId(int id){
    this.id = id;
  }
}

安全操作符

        Dart提供了 ?.操作符。左边的操作对象 如果 为 null 则返回 null

    ? 允许变量为null

  User? user2;
  //编译不通过,可能位null
  //print(user2.name);
  print(user2?.name);//null
  user2 = User();
  print(user2?.name);//scc
  String? a;
  //编译不通过,
  //print(a.length);
  print(a?.length);//null
  a = "scczs";
  print(a?.length);//5

猜你喜欢

转载自blog.csdn.net/g984160547/article/details/131343049