Завдання
Я думаю, що всі люблять автоматичне створення коду та економлять деякий час під час роботи. Ви повинні створити багато класів і членів протягом дня, і ви не хочете створювати всі ці 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
аксесуарі?