Dart代码报错:预期2个位置参数但找到0个,请求技术支持
错误原因与修复方案
1. 参数传递不匹配导致的「2 positional arguments expected, but 0 found」错误
你定义的add函数使用的是位置参数(int n1, int n2),但调用时误用了命名参数的语法(add(n1: 5, n2: 9))。Dart会将这种调用判定为未传递任何位置参数,因此抛出该错误。
修复方式二选一:
- 方式一:保持位置参数,修改调用方式
直接按参数顺序传递值,无需指定参数名:int step1Result = add(5, 9); - 方式二:修改函数为命名参数定义
用大括号包裹参数,Dart 2.12及以上版本需添加required关键字确保参数必传:int add({required int n1, required int n2}) { // 函数体 }
2. 缺少return语句导致的返回值异常
add函数声明返回int类型,但你仅写了n1 + n2;却未返回计算结果,这会导致运行时抛出异常(非空返回类型的函数必须返回对应类型的值)。
修复方法:添加return关键字返回计算结果:
int add(int n1, int n2) { return n1 + n2; }
完整修复代码示例
位置参数版本
int add(int n1, int n2) { return n1 + n2; } void main() { int step1Result = add(5, 9); print(step1Result); // 输出14 }
命名参数版本
int add({required int n1, required int n2}) { return n1 + n2; } void main() { int step1Result = add(n1: 5, n2: 9); print(step1Result); // 输出14 }
内容的提问来源于stack exchange,提问作者Miguel Linera
相关产品推荐
相关产品推荐

