flutter & DartDartFlutter

Dart语言的运算符重载

2019-02-06  本文已影响5人  iCloudEnd

什么是运算符重载(operator overloading)

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

语法糖的现实意义

《Java核心技术36讲》

在日常工作过程中,我们读代码读机会往往超过写代码,软件工程是门协作的艺术

我们写的代码主要是给机器和人看的,给机器看的可以通过代码测试和实际运行来进行检验,给人的目前还没太好的评价方式。不过在设计一门语言的时候,方便阅读也是语言设计重点考虑的一个方面。

运算符重载在功能实现方面并没有任何影响,但是会给未来的自己和其他程序员带来极大的便利。

Dart语言的运算符重载

第一步创建个类

class Role{
  final String name;
  final int accessLevel;
  
  const Role(this.name,this.accessLevel);
}

main()
{
  print('hello  operator overloading');
}

第二步 通过函数实现Role比较

class Role{
  final String name;
  final int accessLevel;
  
  const Role(this.name,this.accessLevel);
}

main()
{
  var adminRole =new Role('管理员',3);
  var reporterRole = new Role('报告员',2);
  var userRole= new Role('用户',1);
  if(adminRole.accessLevel > reporterRole.accessLevel){
    print("管理员的权限大于报告员");
  }  
  if(reporterRole.accessLevel > userRole.accessLevel){
    print("报告员的权限大于用户");
  }  
}

第三步 重载运算符

class Role {
  final String name;
  final int _accessLevel;

  const Role(this.name, this._accessLevel);
  bool operator >(Role Other) {
    return this._accessLevel > Other._accessLevel;
  }

  bool operator <(Role Other) {
    return this._accessLevel < Other._accessLevel;
  }
}

main() {
  var adminRole = new Role('管理员', 3);
  var reporterRole = new Role('报告员', 2);
  var userRole = new Role('用户', 1);
  if (adminRole > reporterRole) {
    print("管理员的权限大于报告员");
  }
  if (reporterRole > userRole) {
    print("报告员的权限大于用户");
  }
}
上一篇下一篇

猜你喜欢

热点阅读