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 getters
manualmente.
Il compito è scrivere un programma o una funzione, che genera automaticamente getters
per 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 getter
metodo sono:
- Il nome della funzione deve iniziare con
get
seguito dal nome del membro con un'iniziale maiuscola. - La funzione non ha parametri.
- Per restituire un uso variabile
return this->memberName;
. getters
esetters
( 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
return
valore 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 getters
solo 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.
A
e gli B
oggetti che hanno getter, ma nessun setter, dovrebbero avere setter nell'output?
this
in un static
accessorio?