Flutter学习-dart(10): 操作符重载(与c++极为相似)

本文介绍了Dart中的运算符重载概念,它作为多态的一种形式,增强了代码的可读性。文章通过比较商品价格的场景展示了如何使用运算符重载简化代码,并强调了在实现时的注意事项,如需使用`operator`关键字并返回相应对象。此外,列举了Dart支持重载的操作符集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 什么是运算符重载

  • 运算符重载(英语:operator overloading)是多态的一种;
  • 运算符重载通常只是一种语法糖,这种语法对语言的功能没有影响,但是更方便程序员使用。让程序更加简洁,有更高的可读性

2. 使用场景

  1. 当比较两个对象的大小时
    • 假设此时有两个商品, 需要比较大小, 规则是按照价格进行比较;当不使用操作符重载时, 写出的代码可能是这样:
if(good1.price < p2.price) {
    //小于
}
  1. 有了操作符重载之后:
bool operator <(Good g) {
    if (this.price < g.price) {
      return true;
    }
    return false;
  }

  bool operator >(Good g) => this.price > g.price;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is Good &&
          runtimeType == other.runtimeType &&
          _price == other._price &&
          _name == other._name &&
          _category == other._category;

  @override
  int get hashCode => _price.hashCode ^ _name.hashCode ^ _category.hashCode;

  1. 以后直接使用 good1 < good2 这样的表达式就可以了!

3. 使用操作符重载的注意事项

  1. operator关键字必须写上,运算符后面的括号中代表的是传入的参数类型和形参;
  2. 方法体中,return也是必要的,后面跟着需要返回的对象或类型;
  3. 操作符重载本质是一种函数调用,只不过是一种加了operator关键字的函数,后面的运算符也就是我们需要被重载的运算符,在函数调用的过程中使用运算符调用了相关函数;
  4. 这样做的好处就是我们可以做一些传统意义上运算符做不了的操作

4. dart中可以重载的操作符集合:

<+|[]
>/^[]=
<=~/&~
>=*<<==
%>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值