在C++中,我可以創建兩個lambda,每個lambda通過值來捕獲在定義lambda時a的值。通過D語言的值捕獲Lambda
int main()
{
int a;
a = 4;
auto f1 = [=](int x) { return x * a; };
a = 6;
auto f2 = [=](int x) { return x * a; };
std::cout << "Answer 1 is " << f1(10) << "\n";
std::cout << "Answer 2 is " << f2(10) << "\n";
}
結果運行的是:
Answer 1 is 40
Answer 2 is 60
然而,在d我似乎能夠做到的是:
import std.stdio;
void main()
{
int a;
a = 4;
auto f1 = (int x){ return x * a;};
a = 6;
auto f2 = (int x){ return x * a;};
writeln("Answer 1 is ", f1(10));
writeln("Answer 2 is ", f2(10));
}
它產生的輸出:
Answer 1 is 60
Answer 2 is 60
是否有任何方式/語法來捕捉值在D中的值類似於在C++中使用[=]
,我似乎無法在手冊中找到答案,所以如果有一種方法可以理解鏈接,以便我可以理解我錯過了什麼。
我相信D沒有這樣的功能。 – sigod
啊,那肯定會解釋爲什麼我找不到它。 – jcoder