我想创建一个动态函数,在声明函数时使用(计算?)变量的值.
下面的示例要求$ var作为全局变量存在,因此可以在调用函数时使用它:
my $var = 'something';
someFunction(sub { return $_[0] eq $var; });
Run Code Online (Sandbox Code Playgroud)
但我猜有一些方法来创建动态函数,所以它被声明如下:
someFunction(sub { return $_[0] eq 'something'; });
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点!?:)
有点草率,但它的工作原理:
#!/usr/bin/env perl
use warnings;
use strict;
my $var = 'something';
my $f1 = sub { my $v = $_[0]; return sub { return $_[0] eq $v } };
my $f2 = $f1->($var);
$var = 'other thing';
print $f2->('something');
Run Code Online (Sandbox Code Playgroud)
有了lambda,一切皆有可能.