Flutter - Dart - 泛型、base64编码解码、重写运算符

泛型

泛型的作用

  • 规范数据类型,如指定 List 、Map的具体数据类型
  • 作为占位符,增加通用性
  • 泛型的生命周期:在调试模式下生效,在生产模式下不会检查泛型,目的是为了在调试模式下提前发现问题
    new List();
    new Map<String,String>();
class  IntSum {
  int sum(int a, int b){
    return a+b;
  }
}
class  StringSum {
   String sum(String a, String b){
     return a+b;
   }
}

class Sum<T> {
  T sum(T t1,T t2){
     return t1+t2;
  }
}


base64的编码与解码

String str = 'encode str';
  
  //base64编码
  List<int> bytes = utf8.encode(str);
  String encodeStr = base64Encode(bytes);
  print(encodeStr); //ZW5jb2RlIHN0cg==

  //base64解码
  List<int>bytes2 = base64Decode(encodeStr);
  String decodeStr = String.fromCharCodes(bytes2);
  print(decodeStr); //encode str
  

重写运算符

  • 通常加减乘除都是对数学的运算,通常都是针对基本数据类型的。
  • Dart中重写运算符,可以使类之间,通过制定运算算法,进行逻辑操作
  Test1 t1 = Test1(1,2);
  Test1 t2 = Test1(3,4);
  Test1 t3 = t1 +t2;
  print('t3.a = ${t3.a} t3.b = ${t3.b}'); //t3.a = 4 t3.b = 6

对于 t1 ,其 a 为 1, b 为 2;对于 t2 ,其 a 为 3, b 为 4。
当执行 t3 = t1 + t2 时,调用自定义的加法运算符重载函数。
在这个函数中,计算新的 Test1 对象的 a 值为 t1 的 a (1)加上 t2 的 a (3),即 4;
计算新的 Test1 对象的 b 值为 t1 的 b (2)加上 t2 的 b (4),即 6。
所以最终得到 t3 的 a 为 4, b 为 6。

class Test1{
  int a;
  int b;
  Test1(this.a,this.b);
  Test1 operator +(Test1 t){
    return Test1(a+t.a,b+t.b);
  }
}

1.定义了一个类的结构:它明确了 Test1 类包含的成员变量 a 和 b,这些成员变量用于存储特定的数据。
2.提供了对象创建的模板:通过构造函数 Test1(this.a, this.b) 可以创建具有特定 a 和 b 值的 Test1 对象,如 t1 和 t2。
3.定义了运算符重载:通过定义 operator + 方法,实现了对两个 Test1 对象进行加法运算的自定义逻辑,使得可以按照特定规则
计算并得到新的 Test1 对象 t3。
总的来说,class Test1 是整个代码逻辑的核心,它定义了相关的数据结构和操作行为,使得对这类对象的处理和运算得以实现。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容