我发现我可以在一个语句中声明两个变量:
my ($a,$b)=(1,2);
Run Code Online (Sandbox Code Playgroud)
但我认为这种语法可能会令人困惑,例如,如果我们有五个变量声明,那么很难看出哪个值属于哪个变量.所以我认为如果我们可以使用这种语法会更好:
my $a=1, $b=2;
Run Code Online (Sandbox Code Playgroud)
我想知道,为什么在Perl中这种声明是不可能的?还有其他选择吗?
(我试图避免重蹈my像每个声明:my $a=1; my $b=2;)
ike*_*ami 17
否.声明的变量my仅在下一个语句开始时命名.您可以分配给新创建的变量的唯一方法是分配给它返回的变量.想想my作为new也声明.
至于你的特定代码,
my $a=1, $b=2;
Run Code Online (Sandbox Code Playgroud)
手段
((my $a)=1), ($b=2);
Run Code Online (Sandbox Code Playgroud)
显然,没有好处.
如果你使用过尚未声明的变量[1],你就会遇到严格的错误.
$a并且$b在每个命名空间中预先声明以方便使用sort.Don*_*kby 17
我是Perl的新手,但我会告诉你到目前为止我学到了什么.
我将改为使用$start而$end不是$a和$b,因为$a并且$b是始终声明的特殊变量.
要回答原始问题,您可以在一行中声明和分配多个变量,如下所示:
my ($start, $end) = (1, 2);
Run Code Online (Sandbox Code Playgroud)
就个人而言,我发现大约相同的打字和不清楚,而不是单独一行:
my $start = 1;
my $end = 2;
Run Code Online (Sandbox Code Playgroud)
但是,我认为将子例程参数分配给命名变量很有用,因为子例程参数位于名为的列表中@_:
use strict;
sub print_range {
my ($start, $end) = @_;
print "Range is from $start to $end.\n";
}
print_range(10, 20); # => Range is from 10 to 20.
Run Code Online (Sandbox Code Playgroud)
您可以my在文档中看到更多的语句怪癖,包括忽略列表中某些值的方法.
下面是在perl中的一行中声明多个变量的方法:
我的($ day,$ mon,$ year,$ hr,$ min,$ sec)=(0)x 6;
这里,所有上述变量都已用0初始化.使用重复运算符'x'.
| 归档时间: |
|
| 查看次数: |
37430 次 |
| 最近记录: |