में एक लवल्यू या रावल्यू के रूप में किया जा रहा है, तो मैं कुछ कोड लिख रहा हूं जहां मैं डेटाबेस मूल्यों को पढ़ने और लिखने के लिए एक लवल्यू और रावलू दोनों के रूप में एक सबराउटिन का उपयोग कर रहा हूं। समस्या यह है कि, मैं इसे अलग-अलग प्रतिक्रिया देना चाहता हूं कि इसका उपयोग एक लवल या रावल्यू के रूप में किया जा रहा है या नहीं।जांचें कि क्या एक सबराउटिन का उपयोग लेल
मैं चाहता हूं कि subroutine डेटाबेस में लिखने के लिए जब इसे एक लाइवल्यू के रूप में उपयोग किया जाए, और डेटाबेस से पढ़ें जब इसे एक रावल्यू के रूप में उपयोग किया जाता है।
उदाहरण:
# Write some data
$database->record_name($subscript) = $value;
# Read some data
my $value = $database->record_name($subscript);
एक ही रास्ता मैं कर इस काम सबरूटीन पहचान क्या यह एक lvalue या एक rvalue के रूप में इस्तेमाल किया जा रहा है और प्रत्येक के लिए अलग प्रतिक्रिया के लिए एक तरीका मिल रहा है के बारे में सोच सकते हैं मामला।
क्या ऐसा करने का कोई तरीका है?
मैं सहमत हूं, लेकिन मैं डेटाबेस एक्सेस के लिए पायथन में उपयोग की जाने वाली एक समान एपीआई की कार्यक्षमता को दर्पण करने की कोशिश कर रहा हूं और ऐसा लगता है कि यह एक एल्यूएलयू सबराउटिन का उपयोग करके यूआई परिप्रेक्ष्य से क्लीनर दिखता है। – tjwrona1992
यदि आप मूस का उपयोग कर रहे हैं तो [MooseX :: LvalueAttribute] (https://metacpan.org/pod/MooseX::LvalueAttribute) है। – ThisSuitIsBlackNot
फैंसी विचार और नीचे दिए गए समाधानों के बावजूद, मुझे यह कहना है कि मैं [ysth] (http://stackoverflow.com/a/35184272/622310) से सहमत हूं जो सुझाव देता है कि आपको केवल '$ डेटाबेस-> record_name ($ subscript, $ value) 'डेटाबेस को लिखने के लिए। फिर आपके सभी सबराउटिन को दूसरे पैरामीटर के अस्तित्व की जांच करना है। इससे कहीं अधिक विस्तृत और आप कोड बनायेंगे कि कोई भी – Borodin