如果foo是本地的,我的程序是否可以更快地访问存储在foo中的函数/变量?
如果我在多个文件中使用package Time;
# Constructor
sub new {
my $class = shift;
my %args = @_;
# Create an empty object
my $self = bless {};
# Get input arguments
my $second = exists $args{'second'} ? $args{'second'} : (localtime)[0];
# Use the accessor to validate and populate object data
$self->second($second);
return $self;
}
# Second accessor
sub second {
my $self = shift;
my $second = shift;
# Input validation
if (defined $second) {
if ($second =~ m{^\d+$} && $second >= 0 && $second <= 59) {
$self->{'second'} = $second;
}
else {
die "'second' must be an integer between 0 and 59!";
}
}
return $self->{'second'};
}
,会多次加载foo.lua吗?
答案 0 :(得分:4)
是。访问本地值可以减少哈希查找次数,并且速度更快。如果它是显而易见的取决于你如何使用它 - 即,如果该表的访问量对于你的程序所做的任何其他事情都相对较高。
require
只会加载任何给定的模块一次。正如docs所说:
该函数首先查看package.loaded表 确定modname是否已加载。如果是,则要求 返回存储在package.loaded [modname]的值。