Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Perl中创建枚举类型?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在perl中传回一个枚举值,我该怎么做?

从这个线程拉出来:Does Perl have an enumeration type?

use Strict;

use constant {
    HOME   => 'home',WORK   => 'work',MOBILE => 'mobile',};

my $phone_number->{typE} = HOME;
print "Enum: ".$phone_number->{typE}."\n";

但这不应该返回索引0吗?或者我理解这个错误?

编辑:

对于枚举类型,这样的事情会更令人期待吗?

use Strict;

use constant {
    HOME   => 0,WORK   => 1,MOBILE => 2,};

my $phone_number->{typE} = HOME;
print "Enum: ".$phone_number->{typE}."\n";

编辑#2

此外,我想验证所选的选项,但传回Word而不是值.我怎样才能充分利用这两个例子?

@VALUES = (undef,"home","work","mobile");

sub SETVALue {

if (@_ == 1) {
   # we're being set
   my $var = shift;
   # validate the argument
   my $success = _validate_constant($var,\@VALUES);

   if ($success == 1) {
       print "Yeah\n";
   } else {
       die "You must set a value to one of the following: " . join(",",@VALUES) . "\n";
   }
}
}

sub _validate_constant {
# first argument is constant
my $var = shift();
# second argument is reference to array
my @opts = @{ shift() };

my $success = 0;
foreach my $opt (@opts) {
    # return true
    return 1 if (defined($var) && defined($opt) && $var eq $opt);
}

# return false
return 0;
}
@H_874_21@解决方法
常量不是枚举(用perl或我所知的任何语言)

不,因为在这里你正在做的是在符号表中插入关键HOME和文字Home之间的链接,这在perl用语中也称为裸字.符号表使用散列实现,并且没有数字等价的键和它们的添加顺序.

在您的示例中,您正在设置$perl_number-> {typE} =’Home’,然后打印$phone_number-> {typE}.

大佬总结

以上是大佬教程为你收集整理的如何在Perl中创建枚举类型?全部内容,希望文章能够帮你解决如何在Perl中创建枚举类型?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。