gpt4 book ai didi

perl - Perl 有枚举类型吗?

转载 作者:行者123 更新时间:2023-12-03 05:46:02 25 4
gpt4 key购买 nike

Perl 是否有一种遵循最佳实践的枚举类型,或者更重要的是,它是否需要一个枚举类型?

我正在处理的项目到处都使用字符串来表示通常在 C# 等语言中使用 Enum 的事物。例如,我们在哈希数组中有一组电话号码,每个电话号码与一种电话类型(“家庭”、“工作”、“移动”等)相关联:

$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 没有做很多严格的类型处理,所以我认为实际上没有什么必要。

在我看来,Readonly您使用的方法很可靠。

还有更传统的 constant杂注。

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

$phone_number->{type} = HOME;

在幕后,它为每个返回值的常量设置一个函数,如下所示。

sub HOME () { 'Home' }

我会坚持使用 Readonly除非您想利用该属性,例如:

package Phone::Type;

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

package main;

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

关于perl - Perl 有枚举类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/473666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com