C++、PHP、Javascript、...、對lambda表示式的支援
阿新 • • 發佈:2019-01-01
lambda
lambda表示式,也叫Closure(閉包),也叫匿名函式。由於其強大之處,幾乎被所有主流開發語言支援,本文試圖列出大部分語言中lambda表示式的樣例程式碼,後續持續更新。
PHP對lambda的支援
<?php
$i = 12;
$j = 33;
$callable = function () use ($i, &$j)
{
echo $i . "\n";
echo $j . "\n";
};
$callable();
$i++;
$j++;
$callable();
- 必須顯式引用外部變數,區分值和引用傳遞。
C++對lambda的支援
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
int i = 12;
int j = 33;
auto callable = [i, &j](){
cout << i << endl;
cout << j << endl;
};
callable();
i++;
j++;
callable();
}
- 必須顯示引用外部變數,區分值傳遞和引用
- 支援
[=][&]
等簡易語法來引用全部外部變數。
Javascript
<script>
var i = 12;
var j = 33;
var callable = function(){
alert(i);
alert(j);
}
callable();
i++;
j++;
callable();
</script
- 無需引用外部變數,外部變數自動可用。
- 所有變數均按照引用傳遞。