首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将List<int>变量用作List<double>方法参数的实参时出现类型错误

将List<int>变量用作List<double>方法参数的实参时出现类型错误
EN

Stack Overflow用户
提问于 2021-11-07 20:48:21
回答 1查看 21关注 0票数 0

我正在学习dart语言,我在使用列表时遇到了这个问题。我创建了一个sum函数来计算列表的和,代码如下:

代码语言:javascript
复制
double sum(List<double> elements) {
   var el = 0.0;
   for (var elem in elements) {
      el += elem;
   }
   return el;
}

我用两种方式从主菜单调用它:

代码语言:javascript
复制
void main(List<String> args) {
   var sm = sum([1, 3, 4, 6]);
   print(sm)
}

它运行得很好。但当我尝试使用中间变量时:

代码语言:javascript
复制
var test = [1, 3, 4, 6];
var sm = sum(test);
print(sm);

我得到一个错误:

代码语言:javascript
复制
 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列表,但是我创建的函数似乎可以处理两种类型,double和int,但我不能理解使用中间变量时的问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-07 21:00:49

在第一个示例中,int文字列表被自动转换为double,这是Dart 2.1的一个新特性。(source) -整型文本在双精度上下文中自动转换为双精度:

代码语言:javascript
复制
var sm = sum([1, 3, 4, 6]);

在此之前,您将遇到编译错误,并且必须显式提供一个double列表作为参数:

代码语言:javascript
复制
var sm = sum([1.0, 3.0, 4.0, 6.0]);

但是,在第二个示例中,您隐式定义了一个不能作为List<double>参数传递的List<int>变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69876408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档