Perl有一个枚举类型,它遵循最佳实践,或者更重要的是,它需要一个吗?
我正在工作的项目使用字符串在所有的地方表示通常使用一个语言如C#中的一个枚举。例如,我们在哈希数组中有一组电话号码,每个都与一个电话类型(“Home”,“Work”,“Mobile”等)相关联:
- $phone_number->{type} = 'Home';
在这里使用只读的变量集合还是应该使用枚举?我发现了一个enum
module on CPAN,但它似乎使用裸字,违反了Perl Best Practices之一。我使用read-only variables的想法是这样的:
- use Readonly;
- Readonly my $HOME => 'Home';
- Readonly my $WORK => 'Work';
- Readonly my $MOBILE => 'Mobile';
- $phone_number->{type} = $HOME;
解决方法
不,没有内置的枚举构造。 Perl不做很多严格的打字,所以我认为实际上没有什么需要。
还有更传统的constant
pragma。
- use constant {
- HOME => 'Home',WORK => 'Work',MOBILE => 'Mobile',};
- $phone_number->{type} = HOME;
- sub HOME () { 'Home' }
- package Phone::Type;
- use constant {
- HOME => 'Home',#...
- };
- package main;
- print Phone::Type->HOME,"\n";