SORU
23 Ocak 2009, Cuma


Perl bir numaralandırma türü var mı?

Perl bir numaralandırma türü varbu en iyi uygulamalara uygunya da belki daha da önemlisi, bir şeye ihtiyacı var mı?

Bir, üzerinde çalıştığım proje genellikle C gibi bir dilde bir Numaralama kullanacağı şeyler göstermek için her yerde dizeleri kullanır#. Örneğin, karma, her telefon türü ile ilişkilendirilmiş bir dizi telefon numaraları var ("Ev", "", "", vb.) Cep: İş

$phone_number->{type} = 'Home';

Değişkenleri salt okunur bir dizi burada kullanmak için yeterli olur mu ya da bir Numaralandırma kullanılmalıdır? enum module on CPAN buldum ama Perl Best Practices birini ihlal eden çıplak kelimeler kullanmak gibi görünüyor. read-only variables kullanma ile ilgili düşüncelerim şöyle:

use Readonly;

Readonly my $HOME   => 'Home';
Readonly my $WORK   => 'Work';
Readonly my $MOBILE => 'Mobile';

$phone_number->{type} = $HOME;

Bu iyi bir yaklaşım mı yoksa daha iyi bir yolu var mı?

CEVAP
23 Ocak 2009, Cuma


Hayır, yerleşik yapı numaralama değil. Perl sıkı yazarak bir sürü yapmak değil, aslında bir kişi için küçük gerek yok sanırım.

Benim görüşüme göre, kullanılan Readonly yaklaşım sağlam.

Ayrıca daha geleneksel constant pragma var.

use constant {
    HOME   => 'Home',
    WORK   => 'Work',
    MOBILE => 'Mobile',
};

$phone_number->{type} = HOME;

Perde arkasında, Yukarı DEĞER gibi döndüren her sabit için bir işlevi ayarlar.

sub HOME () { 'Home' }

Örneğin bu özelliği,: yararlanmak istemiyorsan Readonly ile ilgileniyorum

package Phone::Type;

use constant {
    HOME => 'Home',
    #...
};

package main;

print Phone::Type->HOME, "\n";

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FUzzyBUnnyBOoties

    FUzzyBUnnyBO

    3 EKİM 2007
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • STITCHLESS TV how to sew your own style tutorials

    STITCHLESS T

    9 HAZİRAN 2011