1. 程式人生 > >C++、PHP、Javascript、...、對lambda表示式的支援

C++、PHP、Javascript、...、對lambda表示式的支援

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
  • 無需引用外部變數,外部變數自動可用
  • 所有變數均按照引用傳遞。