La tarea
Supongo que a todos les encanta la generación automática de código y ahorrar algo de tiempo durante el trabajo. Tienes que crear muchas clases y miembros durante el día y no quieres crear todos esosgetters
manualmente.
La tarea es escribir un programa o función que genere getters
automáticamente para todos los miembros de la clase.
La entrada
En nuestro lenguaje los objetos son muy simples. Los nombres de las clases y los miembros deben comenzar con un carácter de [a-zA-Z]
y solo pueden contener los caracteres [a-zA-Z0-9]
. Aquí hay un ejemplo:
class Stack {
public overflow;
protected trace;
private errorReport;
}
La salida
Este es un resultado válido basado en el ejemplo dado:
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;
}
}
El getter
Los requisitos para un getter
método son:
- El nombre de la función debe comenzar con
get
seguido del nombre del miembro con una inicial en mayúscula. - La función no tiene parámetros.
- Para devolver un uso variable
return this->memberName;
. getters
ysetters
( ver Los bonos ) deben estar agrupados y deben aparecer después de todas las declaraciones de variables.
Ejemplo:
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; }
Los requisitos
- Crea un programa o una función.
- La entrada puede provenir de STDIN, argumentos de línea de comando, argumentos de función, un archivo, etc.
- Cualquier formato de salida es aceptable desde un
return
valor simple a un archivo o escribiendo a STDOUT. - Entradas y salida no necesitan ser formateado con espacios en blanco, saltos de línea, pestañas, etc. Esta es una entrada válida:
class A{protected a;}
. - Puede suponer que la entrada es válida y su programa también puede manejar entradas inesperadas inesperadas.
Los bonos
Puede obtener hasta el 10% de su recuento de bytes original retirando el 30% de cada función:
R: Su programa puede abordar las variables recientemente agregadas y getters
solo las que faltan ( public function getB() { return this->b; }
en este caso):
class A {
public a;
public b;
public function getA() { return this->a; }
}
B: Tu programa también genera setters
:
class A {
public a;
public getA() { return this->a; }
public setA(a) { this->a = a; }
}
C: su programa puede manejar miembros estáticos:
class A {
public static c;
public static function getC() { return this->c; }
}
Este es el código de golf, por lo que la respuesta más corta en bytes gana. Las lagunas estándar no están permitidas.
A
y B
deberían artículos que tienen captadores, pero no fijadores, tienen setters en la salida?
this
en un static
descriptor de acceso?