Merhaba arkadaşlar;
Turna için kod yazmaya devam ediyorum ve bazı şekil belirleyici html etiketlerini oluşturmaya başladım. abbr ve acronym etiketleri bir de title istedikleri için onları ayrı bir sınıfa aldım ve kullanıcının istediği tipe göre seçilmelerini final switch() ile sağlamaya çalıştım; ancak super()'ı final switch() içinden çağırmaya izin vermiyor. Verdiği hatayı aşağıda yazdım. Bana mantık olarak yanlış gibi geldi, sonuçta iki farklı duruma göre iki farklı nesneye sahip olmak isteyebiliriz, değil mi?
Aklıma şöyle bir çözüm geldi, package sarma derecesine sahip bir setTag() işlevi ekleyebiliriz, ama bu biraz riskli olabilir gibi geldi; çünkü her Xml elemanının bir etiketi olmalı, sonraya bırakılmamalı diye düşünüyorum. Siz ne dersiniz?
/* Enumeration for type of abbreviations */
enum abbreviationType{abbreviation, acronym};
/*
* Class for abbreviations
* title is the full text of abrreviation(or acronym)
* eg: <abbr title="World Health Organization">WHO</abbr>
* In this example, "World Health Organization" is the tittle.
*/
class Abbreviation : XmlElement
{
this(abbreviationType type, string title, string abbreviation)
in
{
assert(abbreviation.length > 0);
}
body
{
final switch(type){
case abbreviationType.abbreviation : super("abbr"); break;
case abbreviationType.acronym : super("acronym"); break;
}
setAttributes(["title" : title]);
setContent(abbreviation);
}
}
schemehelper.d(68): Error: constructor calls not allowed in loops or after label
s
schemehelper.d(69): Error: constructor calls not allowed in loops or after label
s
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]