use*_*754 3 perl hash associative-array
是否可以创建返回函数的关联数组?类似的东西
%a = ('first' => sub first { $x = @_; sprintf("(first %s)", $x); });
Run Code Online (Sandbox Code Playgroud)
谢谢
这是可能的,但您可能希望my ($x) = @_;代替$x = @_;和删除函数名称,因为您正在处理匿名函数.
然后你可以调用函数 $a{first}->([arg])
my %a = ('first' => sub { my ($x) = @_; sprintf("(first %s)", $x); });
Run Code Online (Sandbox Code Playgroud)
如此接近......你错过的一个细节是你在那里定义一个匿名子,所以你不应该给它起一个名字:
$ perl -E '%a = (first => sub { $x = @_; sprintf("(first %s)", $x); }); say $a{first}->(3);'
(first 1)
Run Code Online (Sandbox Code Playgroud)
(注意,有$x = @_,你设置$x的是项目数@_,而不是数组中的第一项,这就是输出为"first 1"而不是"first 3"的原因.)
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |