加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl究竟如何处理运算符链接?

发布时间:2020-12-15 23:27:22 所属栏目:大数据 来源:网络整理
导读:所以我有一些不起作用的代码: print $userInput."n" x $userInput2; #$userInput = string $userInput2 is a integer 如果数字当然超过0,它会打印出来一次就好了,但是如果数字大于1,它就不会打印出来.我来自java背景,我认为它首先进行连接,然后是结果将是
所以我有一些不起作用的代码:

print $userInput."n" x $userInput2; #$userInput = string & $userInput2 is a integer

如果数字当然超过0,它会打印出来一次就好了,但是如果数字大于1,它就不会打印出来.我来自java背景,我认为它首先进行连接,然后是结果将是与x运算符相乘的结果.但当然不会发生这种情况.现在它在我执行以下操作时有效:

$userInput .= "n";
print $userInput x $userInput2;

我是Perl的新手所以我想知道链接到底发生了什么,如果我能做到的话.

解决方法

你问的是操作符优先权. (“链接”通常是指方法调用的链接,例如$obj-> foo-> bar-> baz.)

Perl文档页面perlop以优先级顺序的所有运算符列表开始. x具有与其他乘法运算符相同的优先级,并且.与其他加法运算符具有相同的优先级,因此当然首先计算x. (即,它“具有更高的优先级”或“更紧密地绑定”.)

与在Java中一样,您可以使用括号解决此问题:

print(($userInput . "n") x $userInput2);

请注意,这里需要两对括号.如果您只使用内括号,Perl会将它们视为指示要打印的参数,如下所示:

# THIS DOESN'T WORK
print($userInput . "n") x $userInput2;

这将打印一次字符串,然后重复打印的返回值一定次数.在前面放置空格(没有帮助,因为空格通常是可选的并且被忽略.在某种程度上,这是运算符优先级的另一种形式:函数调用绑定比其他任何东西更紧密.

如果你真的讨厌有更多括号而不是严格必要,你可以用一元运算符击败Perl:

print +($userInput . "n") x $userInput2;

这将打印与()分开,因此Perl知道该行的其余部分是单个表达式.一元没有任何效果;它的主要用途就是这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读