我想继续使用strict,但是有一个特定的位置,我想为变量分配一个裸字,以便稍后用作哈希键.我正在寻找一种方法,允许我干净利落,同时仍允许我使用严格.
我的代码的简化版本将是这样的:
sub assignElement{
my $self = shift;
my($element_name, $value) = @_;
#sanity check values
$self->{$element_name} = $value;
}
sub assignName{
my $self = shift;
my($value) = @_;
$self->assignElement(name, $value);
}
sub assignAddress{
my $self = shift;
my($value) = @_;
$self->assignElement(addr, $value);
}
Run Code Online (Sandbox Code Playgroud)
真正的代码更复杂,但实际上我正在做类似上面的事情,使用通用的assignElement方法,该方法适用于各种元素值以允许代码重用.
元素键是预定义的,目前都是裸字.我知道我可以把它们变成字符串,但我更喜欢它们保持简单.它们经常被引用,引用它们的时间很繁琐; 此外,我在其他所有哈希键中使用裸字,因此在这种情况下不使用裸字会感觉不一致.
有没有一种方法可以让perl忽略对单个方法调用(或单个变量赋值)的裸字的严格检查,同时允许使用strict strict来照常运行?
稍作改动:
$self->assignElement(name => $value);
$self->assignElement(addr => $value);
Run Code Online (Sandbox Code Playgroud)
缺点:
$self->getElement(name =>))或不一致的($self->getElement('name')).没有改变:(创建常量/子命名addr和name)
use constant {
map {; $_ => $_ } qw(
addr name
)
};
$self->assignElement(name, $value);
$self->assignElement(addr, $value);
Run Code Online (Sandbox Code Playgroud)
缺点:
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |