मुझे लगता है कि यह सबसे अच्छा एक उदाहरण का उपयोग करते हुए कहा जा सकता है:मैं पर्ल में बंद होने का क्रमबद्ध कैसे कर सकता हूं?
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
जब मैं /tmp/sub.store
डंप मैं देख रहा हूँ:
$VAR1 = sub {
package Storable;
use warnings;
use strict 'refs';
my($y) = @_;
return $x + $y;
}
लेकिन $x
इस उप में कभी नहीं परिभाषित किया गया है। मैं उम्मीद करता हूं कि sub_generator
द्वारा उत्पन्न उपको पीढ़ी पर इसके वास्तविक मूल्य के साथ बदल दिया जाएगा। मुझे इसे कैसे हल करना चाहिए?
नोट यह प्रश्न इस one से संबंधित है।
शायद यह वापस कदम उठाने और विचार करने का समय है कि serializing subs एक अच्छा विचार है या नहीं? मुझे अपने करियर में ऐसी चीज करने की ज़रूरत नहीं है। – Ether
@ अन्य मैंने इसके बजाय किसी ऑब्जेक्ट का उपयोग करने के लिए सुझाव अपनाया। कुछ कारणों से मैं पर्ल में वस्तुओं से बचने के लिए उत्सुक था, जब तक कि आप लोगों ने मुझे मूस से पेश नहीं किया, जो सबकुछ बहुत अच्छा बनाता है। –