+ 没有为“对象”类型定义
+ 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
没有 +
运算符。
我不断收到此错误 =>“未为类型 '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);
}
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
没有 +
运算符。