[TOC]
在Dart中,连函数都是对象。下面是一些涉及函数的最佳实践。
## 使用函数声明将函数绑定到名称。
现代语言已经认识到本地嵌套函数和闭包是多么有用。在另一个函数中定义一个函数是很常见的。在许多情况下,此函数被立即用作回调函数,不需要名称。函数表达式就很好。
但是,如果您确实需要给它一个名称,那么使用函数声明语句而不是将lambda绑定到变量。
~~~
void main() {
localFunction() {
...
}
}
~~~
以下是错误示例:
~~~
void main() {
var localFunction = () {
...
};
}
~~~
## 当可以使用"快速触发"时不要创建lambda函数
>**译者注**:这儿快速触发是"tear-off"的翻译,其本意是撕掉的意思,但是明显在此不能直接翻译。根据这种用法觉得翻译为“快速触发”可能会更好理解点儿。如果不明白可以看下边的描述和例子。
如果在对象上引用了一个方法,但省略了括号,Dart会给你一个“快速触发”——闭包接受与方法相同的参数,并在调用时调用它。
如果您有一个调用方法的函数,其参数与传递给它的参数相同,那么您不需要手动将调用包装在lambda中。
~~~
names.forEach(print);
~~~
以下是错误示例:
~~~
names.forEach((name) {
print(name);
});
~~~