Sigil在Perl中有什么好处?

时间:2018-05-09 15:23:15

标签: perl sigils

我理解带有符号的规则。我可以从列表中创建哈希值,并使用它们的平庸来传递引号。我不明白的是Perl中提供的好处标记。

我听到的一些原因是:

  • 字符串插值
    • Ruby具有“#{myVar}”语法,它解决了这些问题的几乎所有,包括完整的表达式而不必求助于“@ {[$ count + 1]}”语法黑客。
  • 可读性
    • 的IDE。任何在盐中值得重视的文本编辑器都有语法高亮。
  • 允许变量subNamespacing
    • 允许我声明$ foo和@foo作为两个不同的变量只会导致将来毁了。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  

' $'符号在语义上像英语单词""因为它表示预期单个值。

     

整个数组(以及数组和散列的切片)用' @'表示,它的作用与单词#34相同;这些"或"那些"用英语表示,因为它表示预期有多个值。

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