[TOC]
在Dart中,連函數都是對象。下面是一些涉及函數的最佳實踐。
## 使用函數聲明將函數綁定到名稱。
現代語言已經認識到本地嵌套函數和閉包是多么有用。在另一個函數中定義一個函數是很常見的。在許多情況下,此函數被立即用作回調函數,不需要名稱。函數表達式就很好。
但是,如果您確實需要給它一個名稱,那么使用函數聲明語句而不是將lambda綁定到變量。
~~~
void main() {
localFunction() {
...
}
}
~~~
以下是錯誤示例:
~~~
void main() {
var localFunction = () {
...
};
}
~~~
## 當可以使用"快速觸發"時不要創建lambda函數
>**譯者注**:這兒快速觸發是"tear-off"的翻譯,其本意是撕掉的意思,但是明顯在此不能直接翻譯。根據這種用法覺得翻譯為“快速觸發”可能會更好理解點兒。如果不明白可以看下邊的描述和例子。
如果在對象上引用了一個方法,但省略了括號,Dart會給你一個“快速觸發”——閉包接受與方法相同的參數,并在調用時調用它。
如果您有一個調用方法的函數,其參數與傳遞給它的參數相同,那么您不需要手動將調用包裝在lambda中。
~~~
names.forEach(print);
~~~
以下是錯誤示例:
~~~
names.forEach((name) {
print(name);
});
~~~