L'obiettivo
Immagino che tutti adorino la generazione automatica di codice e il risparmio di tempo durante il lavoro. Devi creare molte classi e membri durante il giorno e non vuoi crearli tutti gettersmanualmente.
Il compito è scrivere un programma o una funzione, che genera automaticamente gettersper tutti i membri della classe.
L'ingresso
Nel nostro linguaggio gli oggetti sono molto semplici. I nomi delle classi e dei membri devono iniziare con un carattere [a-zA-Z]e possono contenere solo i caratteri [a-zA-Z0-9]. Ecco un esempio:
class Stack {
public overflow;
protected trace;
private errorReport;
}
Il risultato
Questo è un output valido basato sull'esempio dato:
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;
}
}
The Getter
I requisiti per un gettermetodo sono:
- Il nome della funzione deve iniziare con
getseguito dal nome del membro con un'iniziale maiuscola. - La funzione non ha parametri.
- Per restituire un uso variabile
return this->memberName;. gettersesetters( vedi I bonus ) devono essere raggruppati e devono venire dopo tutte le dichiarazioni variabili.
Esempio:
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; }
I requisiti
- Crea un programma o una funzione.
- L'input può provenire da STDIN, argomenti della riga di comando, argomenti della funzione, un file ecc.
- Qualsiasi formato di output è accettabile da un semplice
returnvalore a un file o scrivendo su STDOUT. - In- e l'uscita non hanno bisogno di essere formattato con spazi bianchi, a capo, schede ecc Questo è un input valido:
class A{protected a;}. - Puoi supporre che l'input sia valido e che il tuo programma sia in grado di gestire anche input imprevisti imprevisti.
I bonus
Puoi ottenere fino al 10% del conteggio dei byte originale ritirando il 30% per ogni funzione:
A: Il tuo programma può indirizzare le variabili appena aggiunte e aggiunge getterssolo quelle mancanti ( public function getB() { return this->b; }in questo caso):
class A {
public a;
public b;
public function getA() { return this->a; }
}
B: Il tuo programma genera anche setters:
class A {
public a;
public getA() { return this->a; }
public setA(a) { this->a = a; }
}
C: Il tuo programma può gestire membri statici:
class A {
public static c;
public static function getC() { return this->c; }
}
Questo è il golf del codice - quindi vince la risposta più breve in byte. Le scappatoie standard non sono ammesse.
Ae gli Boggetti che hanno getter, ma nessun setter, dovrebbero avere setter nell'output?
thisin un staticaccessorio?