Zadanie
Chyba wszyscy uwielbiają automatyczne generowanie kodu i oszczędność czasu podczas pracy. Musisz stworzyć wiele klas i członków w ciągu dnia i nie chcesz ich tworzyć getters
ręcznie.
Zadanie polega na napisaniu programu lub funkcji, która automatycznie generuje getters
dla wszystkich członków klasy.
Wejście
W naszym języku obiekty są bardzo proste. Nazwy klas i członków muszą zaczynać się od znaku od [a-zA-Z]
i mogą zawierać tylko znaki [a-zA-Z0-9]
. Oto przykład:
class Stack {
public overflow;
protected trace;
private errorReport;
}
Wyjście
To jest poprawny wynik na podstawie podanego przykładu:
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
Wymagania dla getter
metody są następujące:
- Nazwa funkcji musi zaczynać się
get
od nazwy elementu wielkimi literami. - Funkcja nie ma parametrów.
- Aby zwrócić zmienną, użyj
return this->memberName;
. getters
orazsetters
( patrz Bonusy ) muszą być pogrupowane i muszą znajdować się po wszystkich deklaracjach zmiennych.
Przykład:
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; }
Wymagania
- Utwórz program lub funkcję.
- Dane wejściowe mogą pochodzić z STDIN, argumentów wiersza poleceń, argumentów funkcji, pliku itp.
- Dowolny format wyjściowy jest akceptowalny, od prostej wartości
return
do pliku lub zapisu do STDOUT. - Wejścia i wyjścia nie muszą być sformatowane z spacje, znaki nowej linii, zakładki itp Jest to ważny wkład:
class A{protected a;}
. - Możesz założyć, że dane wejściowe są prawidłowe, a Twój program może również obsługiwać nieoczekiwane dane wejściowe.
Bonusy
Możesz zmniejszyć do 10% oryginalnej liczby bajtów, wypłacając 30% dla każdej funkcji:
Odp .: Twój program może zająć się nowo dodanymi zmiennymi i dodaje getters
tylko brakujące ( public function getB() { return this->b; }
w tym przypadku):
class A {
public a;
public b;
public function getA() { return this->a; }
}
B: Twój program generuje również setters
:
class A {
public a;
public getA() { return this->a; }
public setA(a) { this->a = a; }
}
C: Twój program może obsługiwać elementy statyczne:
class A {
public static c;
public static function getC() { return this->c; }
}
To jest golf golfowy - wygrywa więc najkrótsza odpowiedź w bajtach. Standardowe luki są niedozwolone.
A
i B
czy przedmioty, które mają gettery, ale nie mają seterów, powinny mieć setery na wyjściu?
this
w static
akcesorium?