我已经读过在为哈希定义键值时使用胖逗号,我们不需要在键周围放置quotes
''
来表示它是一个字符串。但是,我发现如果我在密钥周围包含quotes
,它仍然可以正常工作,就好像它忽略了''
。
以下声明是否可以安全使用?
$result = {
'Bill' => { Java => 56, C => 78, Perl => 90 } ,
'Mary' => { Java => 82, C => 65, Perl => PX, Python => 72},
};
答案 0 :(得分:7)
使用胖逗号时,你没有 NEED 使用单引号,如果你愿意,可以 MAY 。这是可选的。
胖逗号只是一个逗号,唯一的区别是如果存在一个单词,一个没有引号的单词,那么它会将该单词视为单引号。
来自perlop:
=> operator是逗号的同义词,除了它导致a 如果它以a开头,则左边的单词被解释为字符串 字母或下划线,仅由字母,数字和字母组成 下划线。这包括可能的操作数 解释为运算符,常量,单数V字符串或 函数调用。如果对此行为有疑问,左操作数可以 明确引用。
答案 1 :(得分:3)
使用带有逗号的引号''
是可选的。使用胖逗号Perl知道它是一个哈希键,如果你仍然想要明确地做,那么它取决于你。
使用许多命名参数的Moose和其他半关键字库,您经常会看到如下代码:
has 'name' => (
is => 'rw',
isa => 'Str'
);
has 'age' => (
is => 'rw',
isa => 'Int'
);
该代码没有任何问题,但它让一些人感到困惑。
chromatic的相关文章:The Fat Comma and Clarity