Dart把运算符重载给我们用,让代码写起来更清晰、更自然。你想知道为啥吗?因为代码自己会“说话”,不像以前要写一大串方法调用。比如有两个Person对象,捷特26岁,龙少25岁。如果我们说“捷特比龙少大”,其实就是捷特的年龄大于25。把大于号重载成两个对象的年龄比较,代码读起来就像说“捷特的年龄大于龙少”,特别直观顺口。 但是,运算符重载也有坑和雷。虽然代码能像说话一样自然,可别把符号玩成暗语,别人就看不懂了。比如说把竖杠符号|写成返回身高更高的人,写法没问题,可如果团队里没人懂这个暗号,阅读成本就很高。给重载运算符配上注释或文档,是团队里最划算的保险。 List、Offset、Person这些类经常会用到运算符重载。比如List可以用[]来索引或修改元素,Offset可以跟Size相加计算位置。这些设计让代码像说话一样自然却不会暴露魔法。 其实在标准库中,几乎到处都能看到运算符重载的身影。Size跟Offset相加变成新的Size对象,List用[]=来修改元素值等等。这些设计让代码更清晰、更自然而不是更神秘绕口。 所以要记住:先问语义再写魔法,别把竖杠当通用方法。单参数bool返回适合比较逻辑重载大于小于等符号。无参或两参留给修改与克隆功能需要参数或无返回值时优先考虑原生方法。多看看标准库源码把别人的魔法变成自己的习惯就能把运算符重载变成加分项而不是负担啦!