Dart函数的默认返回值是多少?

时间:2014-09-09 05:28:01

标签: dart return

即使我故意删除了'return'命令,下面的功能也能正常工作。

main() {
  add(i) => i + 2; //I intentionally deleted 'return'
  print(add(3)); //5
}

但是,在我故意删除'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.
}

编辑以澄清我的问题。

上面后一个函数中的最后一个句子,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
}

即使下面的代码也可以作为'=>'在其中有'return'命令。

main() {
makeAdder(num addBy) => (num i) => addBy + i; ; 


 var add2 = makeAdder(2); 
  print(add2(3) ); //5
} 

2 个答案:

答案 0 :(得分:5)

在Dart中,没有明确return someValue;的每个函数都会返回null;

  

null对象没有方法'call'。

makeAdderadd2)没有return返回nullnull(3)会导致异常。

答案 1 :(得分:2)

我想在这里引用两个重要说明。它可能会帮助其他人:

  1. 尽管Dart可以选择键入(意味着,指定函数的返回类型,例如int或void是可选的),但始终建议尽可能指定类型。在您的代码中,作为良好编程习惯的标志,请务必提及返回类型。

  2. 如果您的函数未返回值,请指定void。如果您省略返回类型,则默认情况下它将返回null

      

    所有函数都返回一个值。如果未指定返回值,则语句返回null;隐式附加到函数主体。