即使我故意删除了'return'命令,下面的函数也能正常工作.
main() {
add(i) => i + 2; //I intentionally deleted 'return'
print(add(3)); //5
}
Run Code Online (Sandbox Code Playgroud)
但是,在我故意删除'return'命令后,下面的函数不起作用.
main() {
makeAdder(num addBy) {
return (num i) {
addBy + i; //I intentionally deleted 'return'
};
}
var add2 = makeAdder(2);
print(add2(3) ); //expected 5, but null.
}
Run Code Online (Sandbox Code Playgroud)
编辑澄清我的问题.
在上面的后一个函数中的最后一个句子,add2(3)不返回一个值(我期望5)但只返回null.
我的问题是为什么后一个函数的'addBy + i'与第一个函数的'add(i)=> i + 2'返回'i + 2'的事实相反.
再次编辑. 答案是"=>"为{return},而不仅仅是{}.
main() {
makeAdder(num addBy) => (num i) { return addBy + i; };
var add2 = makeAdder(2);
print(add2(3) ); // 5
}
Run Code Online (Sandbox Code Playgroud)
即使下面的代码也可以作为'=>'的'return'命令.
main() {
makeAdder(num addBy) => (num i) => addBy + i; ;
var add2 = makeAdder(2);
print(add2(3) ); //5
}
Run Code Online (Sandbox Code Playgroud)
在Dart中,每个函数都没有明确的return someValue;
返回值null
;
null对象没有方法'call'.
makeAdder
(add2
)没有return
返回null
并null(3)
导致异常.
归档时间: |
|
查看次数: |
888 次 |
最近记录: |