काम
मुझे लगता है कि हर कोई काम के दौरान कुछ समय के लिए स्वचालित कोड पीढ़ी और बचत से प्यार करता है। आपको दिन के दौरान बहुत सारी कक्षाएं और सदस्य बनाने हैं और आप उन सभी को getters
मैन्युअल रूप से नहीं बनाना चाहते हैं ।
कार्य एक प्रोग्राम या फ़ंक्शन लिखना है, जो आपके getters
लिए सभी वर्ग सदस्यों के लिए स्वचालित रूप से उत्पन्न करता है ।
इनपुट
हमारी भाषा में वस्तुएं बहुत सरल हैं। वर्गों और सदस्यों के नामों को एक वर्णमाला से शुरू करना चाहिए [a-zA-Z]
और इसमें केवल अक्षर हो सकते हैं [a-zA-Z0-9]
। यहाँ एक उदाहरण है:
class Stack {
public overflow;
protected trace;
private errorReport;
}
उत्पादन
यह दिए गए उदाहरण के आधार पर एक मान्य आउटपुट है:
class Stack {
public overflow;
protected trace;
private errorReport;
public function getOverflow() {
return this->overflow;
}
public function getTrace() {
return this->trace;
}
public function getErrorReport() {
return this->errorReport;
}
}
द गटर
एक getter
विधि की आवश्यकताएं हैं:
- समारोह का नाम
get
सदस्य के नाम के साथ आरंभिक अपरकेस के साथ शुरू होना चाहिए । - फ़ंक्शन का कोई पैरामीटर नहीं है।
- एक चर उपयोग लौटने के लिए
return this->memberName;
। getters
औरsetters
( बोनस को देखें ) समूहीकृत किया जाना चाहिए और सभी चर घोषणाओं के बाद आना चाहिए।
उदाहरण:
private value1;
private value2;
public function getValue1() { return this->value; }
public function setValue1(value) { this->value = value; }
public function getValue2() { return this->value; }
public function setValue2(value) { this->value = value; }
आवश्यकताएँ
- एक कार्यक्रम या एक समारोह बनाएँ।
- इनपुट STDIN, कमांड लाइन तर्क, फ़ंक्शन तर्क, एक फ़ाइल आदि से आ सकता है।
- कोई भी आउटपुट फॉर्मेट एक साधारण-से
return
फाइल से या STDOUT से लिखने के लिए स्वीकार्य है । - इन-और आउटपुट को व्हॉट्सएप, न्यूलाइन, टैब आदि के साथ फॉर्मेट करने की आवश्यकता नहीं है। यह एक वैध इनपुट है
class A{protected a;}
:। - आप यह मान सकते हैं कि इनपुट वैध है और आपका प्रोग्राम अप्रत्याशित इनपुट को अप्रत्याशित रूप से भी संभाल सकता है।
बोनस
आप प्रत्येक सुविधा के लिए 30% की निकासी करके अपनी मूल बाइट गिनती के 10% तक प्राप्त कर सकते हैं:
A: आपका कार्यक्रम नए जोड़े गए चर को संबोधित कर सकता है और getters
केवल ( public function getB() { return this->b; }
इस मामले में) गायब है :
class A {
public a;
public b;
public function getA() { return this->a; }
}
बी: आपका कार्यक्रम भी उत्पन्न करता है setters
:
class A {
public a;
public getA() { return this->a; }
public setA(a) { this->a = a; }
}
C: आपका प्रोग्राम स्थैतिक सदस्यों को संभाल सकता है:
class A {
public static c;
public static function getC() { return this->c; }
}
यह कोड गोल्फ है - बाइट्स जीत में इतना कम जवाब। मानक खामियों को अस्वीकार कर दिया जाता है।
A
और B
उन वस्तुओं को प्राप्त करना चाहिए जिनके पास गेटर्स हैं, लेकिन कोई बसने वाला नहीं है, तो आउटपुट में बसता है?
this
में एक static
एक्सेसर में संदर्भित करने की अनुमति है ?