【问题标题】:+ isn't defined for the type 'Object+ 没有为“对象”类型定义
【发布时间】:2022-01-25 03:11:59
【问题描述】:

我不断收到此错误 =>“未为类型 '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 object operators undefined dart-null-safety


    【解决方案1】:

    Dart 中的fold 在自动确定它应该返回和处理的类型时可能会遇到一些问题。在这些情况下,我们需要像这样手动输入类型(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 返回num 的问题,这是一个问题。在这种情况下,我们可以安全地将其转换为 int 而不会出现问题。

    fold 中有关此问题的详细信息

    这里的问题是 Dart 试图根据方法的预期返回类型来猜测 fold 的泛型。由于== 运算符期望与Object 进行比较,因此fold 也期望只返回Object,而泛型最终为fold&lt;Object&gt;

    这对于第一个参数来说不是问题,因为intObject。但它会成为您的第二个参数的问题,因为Object 没有+ 运算符,所以您期望int 对象而不是Object

    【讨论】:

      猜你喜欢
      • 2021-09-20
      • 2021-11-16
      • 2021-08-28
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2020-05-31
      • 2021-10-24
      • 2021-11-22
      相关资源
      最近更新 更多