我碰巧遇到了一个带有以下语法的perl代码.
sub new{
my ($class, $value)=@_;
$lobby ||= bless{
e=>undef;},$class
}
Run Code Online (Sandbox Code Playgroud)
语法||=是什么意思?
我没有把它作为一个关键词,我在perldoc中找不到类似的语法.
EXPR1 ||= EXPR2;
Run Code Online (Sandbox Code Playgroud)
是相同的
EXPR1 = EXPR1 || EXPR2;
Run Code Online (Sandbox Code Playgroud)
除了EXPR1只评估一次.这是设置默认值的便捷方式.例如:
sub foo {
my %args = @_;
$args{host} ||= "localhost"; # Provide a default host name if none provided.
...
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您似乎有一个单例构造函数.第一次new调用时,它会创建一个新对象.在后续调用中,它将返回先前创建的对象.