- JavaScript
# 不使用Lambda Expression
function cbSuccess() {
console.log("HelloWorld");
};
$.ajax({
type : "GET",
url : "/example",
success : cbSuccess
});
# 使用Lambda Expression
$.ajax({
type : "GET",
url : "/example",
success : function(){
console.log("HelloWorld");
}});
- 語法:[Captures](Parameter) throw -> ret {Body}
- [Captures]:Lambda Expression一定是有[ ]為開頭,而Capture則可定義傳入參數
- [ ]:沒定義任何變量
- [=]:所有變數都以By Value傳入
- [&]:所有變數都以By Reference傳入
- [x,&y]:x變數使用ByValue;&y變數使用By Reference
- [=,&y]:變數的以By Value傳入,除了&y變數使用By Reference
- [&,x]:變數的以By Reference傳入,除了x變數使用ByValue
- [this]:傳入物件this参数
- (Parameter):如不傳參數,該欄位則可省略。而參數需要符合以下3條限制
- 參數不能有預設值
- 不能有可變長參數列
- 不能有無名參數
- throw:例外状况
- -> ret:回傳值形態
- {Body}: 函數主題
- 範例:[]auto func = []() { cout << "HelloWorld"; }
or
auto func = [] { cout << "HelloWorld"; }
- 範例2:[=]int i = 10;
auto func = [](int i) { cout << "HelloWorld"; }
func(i);
[1] C++11 Lambda Expression 語法教學與範例
[2] C++ Lambda表达式基本用法
[3] 匿名函式
沒有留言:
張貼留言