Завдання
Я думаю, що всі люблять автоматичне створення коду та економлять деякий час під час роботи. Ви повинні створити багато класів і членів протягом дня, і ви не хочете створювати всі ці 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;}. - Ви можете припустити, що вхід є дійсним, і ваша програма також може обробити несподіваний вхід несподівано.
Бонуси
Ви можете знизити до 10% від початкового кількості байтів, знявши 30% за кожну функцію:
Відповідь: Ваша програма може адресувати нещодавно додані змінні та додавати gettersлише відсутні ( public function getB() { return this->b; }у цьому випадку):
class A {
public a;
public b;
public function getA() { return this->a; }
}
B: Ваша програма також генерує 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аксесуарі?