我有点惊讶。如果我使用常量来表示哈希键Perl不使用该值。我需要把&在它面前实现这一目标。
use constant A => "a";
use constant B => "b";
my %h = (A => "1", &B => "2");
print "\n". A . ", " . B;
foreach (sort (keys (%h)))
{
print "\n" . $_ . "=" . $h {$_};
}
输出:
a, b
A=1
b=2
但我希望(第二行不同)。
a, b
a=1
b=2
没有&的任何方式做到这一点何时使用常量来表示哈希键?
感谢您的帮助!
答案 0 :(得分:5)
它已在CAVEATS下的constant中记录。
常用方法是使用my %h = (A => "1", B() => "2");
:
my %h = (A => "1", B ,=> "2");
或切换到"非字符串化的胖逗号" (或一个简单的逗号):
&
使用$ perl -MO=Deparse ~/1.pl
sub B () { 'b' }
use constant ('A', 'a');
use constant ('B', 'b');
my(%h) = ('A', '1', &B, '2');
print "\na, b";
foreach $_ (sort keys %h) {
print "\n" . $_ . '=' . $h{$_};
}
/home/choroba/1.pl syntax OK
并不会内联常量,因为您可以使用B::Deparse进行验证:
var myObject = {
id: 0,
category: {
id: 0,
name: "string"
},
name: "doggie",
photoUrls: [
"string"
],
tags: [{
id: 0,
name: "string"
}],
status: "available"
};