在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