Görev
Sanırım herkes otomatik kod oluşturmayı ve çalışma sırasında biraz zaman kazanmayı seviyor. Gün boyunca çok sayıda sınıf ve üye oluşturmanız getters
gerekir ve bunların hepsini el ile oluşturmak istemezsiniz .
Görev, getters
tüm sınıf üyeleri için sizin için otomatik olarak oluşturulan bir program veya işlev yazmaktır .
Girdi
Bizim dilimizde nesneler çok basittir. Sınıfların ve üyelerin adları bir karakterle başlamalıdır [a-zA-Z]
ve yalnızca karakterleri içerebilir [a-zA-Z0-9]
. İşte bir örnek:
class Stack {
public overflow;
protected trace;
private errorReport;
}
Çıktı
Bu, verilen örneğe dayanan geçerli bir çıktıdır:
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
Bir getter
yöntemin gereksinimleri :
- İşlev adı, başından
get
büyük harfle başlayan üye adıyla başlamalıdır . - Fonksiyonun hiçbir parametresi yoktur.
- Değişken kullanımı döndürmek için
return this->memberName;
. getters
vesetters
( bkz . Bonuslar ) gruplandırılmalı ve tüm değişken bildirimlerin ardından gelmelidir.
Misal:
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; }
Gereksinimler
- Bir program veya işlev oluşturun.
- Giriş STDIN, komut satırı bağımsız değişkenleri, işlev bağımsız değişkenleri, bir dosya vb.
- Herhangi bir çıktı biçimi, basit bir
return
değerden bir dosyaya veya STDOUT'a yazmadan kabul edilebilir . - Giriş ve çıkış boşlukların, yeni satırlar, sekmeler vb Bu, geçerli bir girdidir ile biçimlendirilmiş olması gerekmez:
class A{protected a;}
. - Girişin geçerli olduğunu ve programınızın beklenmedik girişleri de beklenmedik şekilde işleyebileceğini varsayabilirsiniz.
Bonuslar
Her özellik için% 30'u geri çekerek orijinal bayt sayınızın% 10'una kadar düşebilirsiniz:
C: Programınız yeni eklenen değişkenleri ele alabilir ve getters
yalnızca eksikleri ekler ( public function getB() { return this->b; }
bu durumda):
class A {
public a;
public b;
public function getA() { return this->a; }
}
B: Programınız ayrıca setters
şunları üretir :
class A {
public a;
public getA() { return this->a; }
public setA(a) { this->a = a; }
}
C: Programınız statik üyeleri işleyebilir:
class A {
public static c;
public static function getC() { return this->c; }
}
Bu kod golf - bayt çok kısa cevap kazanır. Standart boşluklara izin verilmez.
A
ve B
alıcıları olan, ancak ayarlayıcıları olmayan öğelerin çıktısında ayarlayıcıları olmalı mı?
this
Bir static
erişimcide hangi dilde başvurabilirsiniz ?