我正在學習 dart 語言,我在使用串列時遇到了這個問題。我創建了一個 sum 函式來計算串列的總和,這里是代碼:
double sum(List<double> elements) {
var el = 0.0;
for (var elem in elements) {
el = elem;
}
return el;
}
我通過兩種方式從主選單呼叫它:
void main(List<String> args) {
var sm = sum([1, 3, 4, 6]);
print(sm)
}
它作業正常,但是當我嘗試使用中間變數時:
var test = [1, 3, 4, 6];
var sm = sum(test);
print(sm);
我得到錯誤:
Error: The argument type 'List<int>' can't be assigned to the parameter type
'List<double>'.
functions.dart:5
- 'List' is from 'dart:core'.
var sm = sum(test);
^
我知道我必須使用 List ,因為我使用的是 int 串列,但看起來我創建的函式可以與雙精度型和 int 型一起使用,但是我無法理解使用中間變數時出現的問題? ? 請任何解釋。提前謝謝。
uj5u.com熱心網友回復:
在您的第一個示例中,int文字串列會自動轉換為double,這是 Dart 2.1 的新功能。( source ) - int 文字在雙重背景關系中自動轉換為雙精度:
var sm = sum([1, 3, 4, 6]);
在此之前,您會遇到編譯錯誤,并且必須顯式提供一個double串列作為引數:
var sm = sum([1.0, 3.0, 4.0, 6.0]);
但是,在您的第二個示例中,您隱式定義了一個List<int>不能作為List<double>引數傳遞的變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352804.html
標籤:镖
