用下面一小段程序测试,结果显示 equal
my $c='G';
if ($c == 'a')
{
print 'equal';
};
== 在documentation 里给的解释是 returns true if the left argument is numerically equal to the right argument.
难道 G 和 C 作为字符转化为的number 能够相等吗?
另外,如果==这个操作符只能作用于数字类型的参数,按强类型语言的理念,应该报编译错误,而作为弱类型语言,perl猜测了变量的类型?而实际无论从哪个角度理解---存储器实际存储值,或者是按某种合理的转化规则转换为的数字----二者都不能相等啊!
哪位能够给出解释?
错误要在编译时尽量暴露的目的之一,按我的理解,是使得尽量减少语义表达的不准确性造成的排错困难,而perl的设计目标却是能够尽量像用自然语言一样使用编程语言(?),我觉得这是不对的。不能仅仅为这一时的学习曲线的平缓(和自然语言有类似概念,比如复数和单数就直接对应语言中的标量和向量)就很大地牺牲了写程序和排错的效率。不理解在何种应用情况下这个特点是一种优势?
-- 您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
没有评论:
发表评论