+ 没有为“对象”类型定义

+ isn't defined for the type 'Object

我不断收到此错误 =>“未为类型 'Object' 定义运算符‘+’。(查看文档)。尝试定义运算符‘+’。”

我该如何定义它?

    import 'dart:math';

bool isArmstrongNumber(int number) {
    var numberString = number.toString();

return number ==
    numberString.split("").fold(0,
        (prev, curr) => prev! + pow(int.parse(curr), numberString.length));
}                             

main() {
  var result = isArmstrongNumber(153);
  print(result);
}
Dart 中的

fold 在自动确定它应该 return 和处理的类型时可能会遇到一些问题。在这些情况下,我们需要像这样手动输入类型 (fold<int>()):

import 'dart:math';

bool isArmstrongNumber(int number) {
  final numberString = number.toString();

  return number ==
      numberString.split("").fold<int>(
            0,
            (prev, curr) =>
                prev + pow(int.parse(curr), numberString.length).toInt(),
          );
}

void main() {
  final result = isArmstrongNumber(153);
  print(result); // true
}

我还解决了 pow returns num 的问题。在这种情况下,我们可以安全地将其转换为 int 而不会出现问题。

关于 fold

这个问题的详细信息

这里的问题是 Dart 试图根据预期的 returned 方法类型来猜测 fold 的泛型。由于 == 运算符期望与 Object 进行比较,因此 fold 也期望仅 return Object 并且泛型最终为 fold<Object> .

这对于第一个参数不是问题,因为 int 是一个 Object。但这成为你的第二个参数的问题,你期望一个 int 对象而不是 Object 因为 Object 没有 + 运算符。