聘我网

新概念招聘3.0

Perl如何调用匿名函数?

vote up0vote downstar

尝试了这几种方式:

(sub {
print 1;
})();



sub {
print 1;
}();

结果都是

syntax error at -e line 4, near "}("
Execution of -e aborted due to compilation errors.
 

1 个答复

vote up0vote downcheck

匿名函数其实是个code reference,所以可以这样调用:

(sub { print "Hello world\n" })->();

sub { print "Hello world\n" }->();

或者也可以dereference后调用:

&{ sub { print "Hello World" }}();

如果将code reference存到标量中,则可以被任意数据类型调用:

my $method = sub {...};

$obj->$method           # same as $method->($obj)
$obj->$method(...)      # $method->($obj, ...)

[1, 2, 3]->$method      # $method->([1, 2, 3])
[1, 2, 3]->$method(...) # $method->([1, 2, 3], ...)
2->$method();           # $method->(2)
@arr->$method();        # $method->(@arr)
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.