Perl:什么是其特有的autovivafacation性质?

相关文章

Perl:匿名数组嵌套的解引用相关问题

Perl:正则表达式


这是Perl中的一个特有性质,换句话说这个单词是Perl所创造的。

下面是维基百科对autovivafacation的解释。

Autovivification

在Perl编程语言中,autovivafacation(自动苏醒)是指在解引用未定义值时Perl会根据需要自动创建新的数组和散列。Perl自动苏醒允许程序员引用结构化变量和该结构化变量的任意子元素,而无需事先明确声明变量及其完整结构的存在。

相比之下,其他编程语言要么:1)要求程序员在使用或引用变量结构的任何部分之前明确声明整个变量结构;或者2)要求程序员在引用变量结构的任何部分之前声明变量结构的一部分;或者3)在引用、赋值或组合引用变量任何部分的表达式之前,对变量的一部分创建赋值。

Perl自动苏醒可以与Python、PHP、Ruby和许多C风格语言进行对比,在这些语言中,通常不允许对空值或未定义值进行解引用。

例如:

    @array=(1,2);
    @$aref=@array;

第二条语句中的@是解引用,但$aref变量并没有被定义,如果在C语言中,这就好像没有初始化指针而直接使用 如int*a;

*a=b;,这是不被允许的,因为未初始化的指针a可能指向内存的任何位置,此时把b赋值给a指向的位置会出现错误。但在Perl这是允许的,第二条语句和$aref=\@array的作用相同。

猜你喜欢

转载自blog.csdn.net/weixin_45791458/article/details/128875973