Perl 运算符是“发现的”而不是设计的?
Posted
技术标签:
【中文标题】Perl 运算符是“发现的”而不是设计的?【英文标题】:Perl operators are "discovered" and not designed? 【发布时间】:2013-07-09 22:54:12 【问题描述】:刚刚阅读此页面:https://github.com/book/perlsecret/blob/master/lib/perlsecret.pod,并且对以下语句感到非常惊讶:
Discovered by Philippe Bruhat, 2012.
Discovered by Abigail, 2010. (Alternate nickname: "grappling hook")
Discovered by Rafaël Garcia-Suarez, 2009.
Discovered by Philippe Bruhat, 2007.
等等……
上述运算符是发现,所以它们不是 perl 设计故意的?
这意味着 perl 可能有一些随机的字符序列按照正确的顺序做一些有用的事情比如()x!!
“操作员”?
这里是否还有其他语言发现操作符?
【问题讨论】:
C、C++、Perl 等有goes to operator 【参考方案1】:从您链接的页面:
在这些 Perl 程序员看到的意义上,它们就像运算符 他们经常足以在不考虑他们的情况下认出他们 较小的部分,并最终将它们添加到他们的工具箱中。他们是 就像秘密一样,它们必须被自己的人发现 未来的用户(或被其他程序员传送),因为他们 没有明确记录。
也就是说,它们实际上并不是自己的运算符,而是由较小的运算符组成,它们组合在一起做某事。
例如,'venus' 运算符(0+
或 +0
)将对象的左侧或右侧数字化。这就是以任何形式添加零的作用,无论是否“秘密”运算符。
【讨论】:
"秘密运算符实际上并不是秘密,它们也不是真正的运算符。perl 解析器不会专门识别它们,也没有人试图对你隐藏它们。"【参考方案2】:Perl 有许多执行特殊操作的运算符,以及在特定上下文中解释时执行特殊操作的字符。与其将它们视为实际的“操作符”(即 Perl 解析器未明确识别),不如将它们视为某些功能/操作的组合。例如()X!!
,被称为“企业”运算符,由列表()
、重复运算符x
和!!
(“砰砰”运算符),它执行布尔转换。这是 Perl 如此富有表现力的原因之一。
【讨论】:
以上是关于Perl 运算符是“发现的”而不是设计的?的主要内容,如果未能解决你的问题,请参考以下文章