gpt4 book ai didi

perl - 无法调用方法状态 - 错误

转载 作者:行者123 更新时间:2023-12-05 00:58:33 27 4
gpt4 key购买 nike

我是 Perl 的新手,正在尝试解决 Llama 书中的一些练习题。问题是编写一个子例程,如果他是第一个,就表示欢迎,或者告诉他前一个在那里的人的名字。我的代码看起来像:

#! perl

# This is the greeter problem .

sub greetPerson{
state $previous = undef ;

if($previous eq undef){
print " Welcome ... u r the first \n";
}
else{
print " Hi ... $previous was already here \n";
}

$previous = $_;
return 0;
}

@code = ("ravi" , "teja" , "chandu");
greetPerson($code[0]);
greetPerson($code[1]);
greetPerson($code[2]);

我得到一个错误提示

 "Can't call method state on undefined value in Line 6.  "

请帮助我了解这意味着什么、为什么会出现以及如何解决它..?我知道“状态”在其他语言(C/Java)中是“静态”的同义词。我错了吗?

最佳答案

state 是一项相当新的功能(自 Perl 5.10 起),默认情况下未启用。启用它:

use feature 'state';

使用 state 有点等同于 Java 中的静态变量。另一种没有状态的方法是在 greetPerson 之外用一个简单的 my 声明 $previous,这意味着它在你的整个脚本范围内.

顺便说一句,您还应该在所有脚本中包含这些行,以免在后续过程中遇到很多麻烦:

use strict;
use warnings;

此外,在 greetPerson 中,您需要获取参数,您可以从 @_ 获取参数。例如

my ($name) = @_; # or
my $name = $_[0];

关于perl - 无法调用方法状态 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808763/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com