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

  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006