【问题标题】:perl hash with fat comma带粗逗号的 perl 哈希
【发布时间】:2014-06-08 14:04:18
【问题描述】:

我已经读过,在定义散列的键值时使用粗逗号,我们不需要在键周围加上quotes'' 来表示它是一个字符串。但是,我发现如果我在键周围包含quotes,它仍然可以工作,就好像它忽略了''

以下语句可以安全使用吗?

$result = { 
     'Bill' => { Java => 56, C => 78, Perl => 90 } , 
     'Mary' => { Java => 82, C => 65, Perl => PX, Python => 72},
};

【问题讨论】:

    标签: perl hash


    【解决方案1】:

    在使用粗逗号时,您不需要需要使用单引号,如果您愿意,您可以。它是可选的。

    fat comma 只是一个逗号,一个区别是如果存在一个裸词,一个不带引号的单词,那么它会将这个裸词视为单引号。

    来自perlop

    => 运算符是逗号的同义词,除了它会导致 如果左侧的单词以 a 开头,则将其解释为字符串 字母或下划线,仅由字母、数字和 下划线。这包括原本可能是的操作数 解释为运算符、常量、单个数字 v 字符串或 函数调用。如果对此行为有疑问,左操作数可以 明确引用。

    【讨论】:

      【解决方案2】:

      可以选择使用引号'' 和粗逗号。用胖逗号 Perl 知道它是一个哈希键,如果你仍然想明确地做它,那取决于你。

      在 Moose 和其他使用大量命名参数的半关键字库中,您经常会看到如下代码:

      has 'name' => (
          is => 'rw',
          isa => 'Str'
      );
      
      has 'age' => (
          is => 'rw',
          isa => 'Int'
      );
      

      该代码没有任何问题,但它让一些人感到困惑。

      chromatic的相关文章:The Fat Comma and Clarity

      【讨论】:

        猜你喜欢
        • 2012-10-07
        • 2020-07-19
        • 1970-01-01
        • 2013-12-20
        • 2013-08-10
        • 1970-01-01
        • 2010-10-20
        • 1970-01-01
        相关资源
        最近更新 更多