-3

我理解印记的规则。我可以从列表中制作散列,并与其中的平庸者一起传递参考。我不明白的是sigils 在 Perl 中提供的好处。

我听说的一些原因是:

  • 字符串插值
    • Ruby 具有“#{myVar}”语法,它解决了几乎所有这些问题,包括拥有完整的表达式而不必诉诸“@{[$count + 1]}”语法技巧。
  • 可读性
    • IDE。任何值得在盐中发挥作用的文本编辑器都具有语法突出显示。
  • 允许变量 subNamespacing
    • 允许我将 $foo 和 @foo 声明为两个不同的变量只会导致未来的毁灭。

编程语言中一个非常有用的特性是一致性。我的好奇心驱使我问,如果我将一个列表声明为“@foos”,并将一个计数器声明为“$count”,那么需要通过说“$foos[$count]”来访问元素有什么意义?哦!但是如果我将元素读入列表上下文中,我可以使用“@”;所以说“@foos[$idx1, $idx2]”现在是有道理的!通过查看印记,我可以看出我将读取一个数组而不是单个标量!

  • 我仍然可以通过说“foos[count]”来判断我正在阅读单个元素
  • 我仍然可以通过说“foos [idx1,idx2]”来判断我正在阅读多个元素。
  • 我仍然可以通过说“foos{key}”来判断我正在读取单个值
  • 我仍然可以通过说“foos{key1, key2}”来判断我正在读取多个值

这种模式几乎适用于我能想到的任何情况。无论使用哪个印记,或者没有任何印记,所做的事情的含义都很清楚。唯一的区别是我必须跟踪上下文并确保使符号保持一致

4

1 回答 1

1

最好的解释可以在 perldoc的perldata中找到。它们的功能类似于自然语言中的冠词和代词。

'$' 符号在语义上与英语单词“the”类似,因为它表示需要单个值。

整个数组(以及数组和散列的切片)用'@'表示,这与英语中的“这些”或“那些”这个词的作用非常相似,因为它表示需要多个值。

Perl 6 采用了不同的方式,因此对其价值的看法各不相同,但这就是它们背后的理论。

于 2018-05-09T15:33:10.983 回答