Tôi nghĩ rằng điều này có thể được yêu cầu tốt nhất sử dụng một ví dụ:Làm thế nào tôi có thể tuần tự hóa một đóng cửa trong Perl?
use strict;
use warnings;
use 5.010;
use Storable qw(nstore retrieve);
local $Storable::Deparse = 1;
local $Storable::Eval = 1;
sub sub_generator {
my ($x) = @_;
return sub {
my ($y) = @_;
return $x + $y;
};
}
my $sub = sub_generator(1000);
say $sub->(1); # gives 1001
nstore($sub, "/tmp/sub.store");
$sub = retrieve("/tmp/sub.store");
say $sub->(1); # gives 1
Khi tôi đổ /tmp/sub.store
tôi thấy:
$VAR1 = sub {
package Storable;
use warnings;
use strict 'refs';
my($y) = @_;
return $x + $y;
}
Nhưng $x
không bao giờ được quy định tại phụ này. Tôi hy vọng rằng phụ được tạo bởi sub_generator
sẽ có $x
được thay thế bằng giá trị thực tế của nó khi tạo. Làm thế nào tôi nên giải quyết điều này?
Lưu ý câu hỏi này liên quan đến điều này one.
Có lẽ đã đến lúc phải quay lại và cân nhắc xem việc sắp xếp tuần tự hóa phụ có phải là một ý tưởng hay không? Tôi hiếm khi gặp phải sự cần thiết phải làm một việc như vậy trong sự nghiệp của mình. – Ether
@Tôi đã sử dụng đề xuất này để sử dụng đối tượng thay thế. Vì một lý do nào đó, tôi có xu hướng tránh các vật thể trong Perl, cho đến khi các bạn giới thiệu tôi với Moose, điều đó khiến mọi thứ trở nên đẹp hơn. –