我不斷收到此錯誤 =>“未為型別 '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);
}
uj5u.com熱心網友回復:
fold在 Dart 中自動確定應該回傳和處理的型別時可能會遇到一些問題。在這些情況下,我們需要像這樣手動輸入型別 ( 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根據方法的預期回傳型別來猜測 的泛型。由于==運算子期望 anObject進行比較,fold因此也期望只回傳Object并且泛型最終為fold<Object>。
這對于第一個引數來說不是問題,因為它int是一個Object. 但是它成為您期望int物件而不是Object因為Object沒有 運算子的第二個引數的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/394183.html
上一篇:鏢。帶引數的列舉
