ठीक है सैनिटी चेक अधिभार के लिए ठीक है मेरे लिए काम नहीं कर रहा है। मुझे नहीं पता कि यह मेरे पास perl का संस्करण है, या overload.pm का संस्करण है, या मैंने इसे कैसे कार्यान्वित किया है, इसके साथ कुछ गलत है, लेकिन यह कोड मेरे लिए काम नहीं करता है।"उपयोग नामस्थान: autoclean" के साथ "अधिभार का उपयोग" क्यों नहीं करता है?
पर्ल संस्करण
This is perl, v5.10.1 (*) built for x86_64-linux-gnu-thread-multi
अधिभार संस्करण
perl -Moverload -e 'print "$overload::VERSION\n";'
1.07
Token.pm
package Token;
use namespace::autoclean;
use Data::Dumper;
use Moose;
use Moose::Util::TypeConstraints;
use overload '+' => \&_overload_add, fallback => 1;
has 'secretvalue' => (is => 'rw', isa => 'Int');
sub _overload_add{
my ($one, $two) = @_;
my $value = $one->secretvalue() + $two->secretvalue();
return ($value);
}
मुख्य
use strict;
use warnings;
use Token;
my $t = Token->new(secretvalue => 17, key => 'x');
my $t2 = Token->new(secretvalue => 12, key => 'y');
my $x = $t + $t2;
print $x;
प्रिंट
$VAR1 = 12900840;
सबसे बुरी बात यह है कि मैं चेतावनी या लॉग में त्रुटियों के किसी भी प्रकार नहीं मिल रहा है है।
अद्यतन
धन्यवाद समस्या को खोजने के लिए Freido करने के लिए। मैंने सवाल उठाया है अगर किसी और ने इस पर ठोकर खाई है।
क्या पर्ल/मूस समुदाय आमतौर पर ओवरलोड का उपयोग नहीं करता है?
+1 समाधान के लिए +1 जब मैंने डेस्क पर अपने सिर को एक या दो घंटे के लिए मेरे कोड के साथ समस्या को खोजने की कोशिश की। मूर्ख पुस्तकालय कीड़े! – qodeninja
वहां गया, ऐसा किया। :) जब तक मुझे याद नहीं आया कि जादू अधिग्रहण करके 'अधिभार' काम करता है, तब तक मैं आपकी समस्या से काफी परेशान था, और मुझे आश्चर्य हुआ कि क्या 'ऑटोक्लियन' उनके साथ गड़बड़ कर रहा था। – friedo
@nodebunny, जब आप अपना खुद का लिख सकते हैं तो अन्य लोगों के कोड के बारे में शिकायत क्यों करें? :) इस सवाल ने मुझे [नेमस्पेस :: स्वीप] लिखने के लिए प्रेरित किया (http://search.cpan.org/~friedo/namespace-sweep/lib/namespace/sweep.pm) जो आपके ओवरलोड को टंप नहीं करेगा। अधिक जानकारी [यहां] (http://blogs.perl.org/users/mike_friedman/2011/10/announcing-namespacesweep.html)। – friedo