You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart语言中如何为Int类新增自定义运算符实现特定计算处理

Dart中为int类型添加自定义运算符的实现方法

Dart不支持直接修改内置int类的原生实现,你可以通过两种方式实现自定义运算符逻辑:

方式一:通过扩展(Extension)新增运算符

这是无侵入的实现方案,不需要修改原有int类代码,仅在扩展生效的作用域内可用。

实现示例

import 'dart:math';

// 定义int类型的扩展
extension IntCustomOperator on int {
  /// 自定义运算符 ^^:实现幂运算
  num operator ^^(int exponent) {
    return pow(this, exponent);
  }

  /// 自定义运算符 +%:返回当前值加上自身的指定百分比
  double operator +%(int percent) {
    return this * (1 + percent / 100);
  }
}

调用方法

void main() {
  print(2 ^^ 4); // 输出 16
  print(200 +% 15); // 输出 230.0
}

方式二:通过包装类重载原生运算符

如果你需要修改int原有运算符的默认行为(比如修改+的计算逻辑),扩展无法覆盖原生类的实现,需要自己封装包装类:

class CustomInt {
  final int value;
  CustomInt(this.value);

  // 重写+运算符:两数相加后再乘以2
  CustomInt operator +(CustomInt other) {
    return CustomInt((value + other.value) * 2);
  }
}

// 调用示例
void main() {
  final a = CustomInt(3);
  final b = CustomInt(5);
  print((a + b).value); // 输出结果为 (3+5)*2 = 16
}

注意事项

  • 可自定义的运算符有固定允许范围:支持+、-、*、/、%、^、&、|、>>、<<等单/二元运算符,也可以自定义组合运算符(比如^^、+%),但不能和Dart保留语法冲突。
  • 二元运算符只能传入1个参数,一元运算符不能传入参数,参数类型和返回类型可根据需求自定义。
  • 扩展定义的运算符仅在导入了该扩展的代码文件中生效,不会影响全局int的行为,也不会和其他库的实现冲突。

内容的提问来源于stack exchange,提问作者Ahmed Alkayyal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:54:02