2010年8月25日星期三

[PerlChina] 关于~~的'交换律'

大家好:)我有一个关于~~的问题:
关于 $a ~~ $b是否与$b ~~ $a等价
书上(learning perl
5th中文版,236页)上说是符合'交换律'的,所以可以交换,即等价。
perlsyn上也说'For example, the smart match operator short-circuits
whenever possible, but "grep" does not.'
这里是说~~'短视',所以$a和$b的顺序无关吧。

实际中

use warnings;
use strict;
use 5.010;

my @c=qw/a b/;
if(@c ~~ 'a'){
say '@c ~~ a';
}
if('a' ~~ @c){
say 'a ~~ @c';
}

运行显示'a ~~ @c'
即$a ~~ $a与$b ~~ $a不等价
问题:
1 那么为啥不等价?是本来就不可以交换还是什么?
2 如果说'a' ~~ @c,是看@c中有没有一个元素是'a',那么@c ~~ 'a'是啥意思?

谢谢:)
--
Using Opera's revolutionary email client: http://www.opera.com/mail/

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。

没有评论: