Tôi cần trả lại giá trị enum trong perl, làm cách nào tôi có thể thực hiện việc này?Làm cách nào để tạo kiểu enum trong Perl?
kéo từ chủ đề này: 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";
nhưng không nên chỉ số lợi nhuận này 0? hoặc tôi hiểu điều này sai?
EDIT:
Vì vậy, điều gì đó như thế này có thể mong đợi hơn đối với loại enum?
use strict;
use constant {
HOME => 0,
WORK => 1,
MOBILE => 2,
};
my $phone_number->{type} = HOME;
print "Enum: ".$phone_number->{type}."\n";
EDIT # 2
Ngoài ra tôi muốn kiểm tra vào tùy chọn chọn nhưng vượt qua trở lại Lời thay vì sau đó giá trị. Làm thế nào tôi có thể có tốt nhất của cả hai ví dụ?
@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;
}
Ý bạn là gì nếu chỉ mục * 0 *? –
Bạn đã đọc câu trả lời được chấp nhận cho câu hỏi bạn đã liên kết chưa? Đặc biệt là phần nói rằng Perl không * không * có một loại enum? Nếu vậy, bạn đang mong đợi "chỉ số 0" đến từ đâu? – friedo
@friedo Tôi đồng ý với bạn, tôi chỉ muốn đảm bảo rằng tôi hiểu được quyền này. Tôi cần phải có tùy chọn để thiết lập HOME nhưng trả về 0. Chỉ cần thay đổi giá trị thành 0 công việc? Xem Edit –