[问题] 点点(..)运算子两问

楼主: AntaresStar   2013-10-27 21:51:23
对一个array我们可以用@arr[1..2]这样的方式取到subarray
但对一个array ref 用箭头$arr_ptr->[1..2]这样会只取到其中一个值
看不太出规律 而又不会error
有人知道是为什么吗
另外一个问题
有人知道4个点的用途吗
perl -e 'print 1..2' # 12
perl -e 'print 1...2' # 12
perl -e 'print 1....2' # (print nothing)
perl -e 'print 0....2' # 0
perl -e 'print 1.....2' # syntax error at -e line 1, near "....."
网络上查到的多半都是2点跟3点的差异 找不到4点的
作者: scwg ( )   0000-00-00 00:00:00
->[ ] 的 index 不是 list context, 而是 scalar context1..2 的 scalar context 解读和 list context 不一样e.g. $arr_ptr->[1,3,5] 相当于 $arr_ptr->[5], 不是@{$arr_ptr}[1, 3, 5]
作者: cutekid (可爱小孩子)   0000-00-00 00:00:00
推 scwg 解释(Y)
作者: scwg ( )   0000-00-00 00:00:00
那再推一个 xd 这个是猜的, 四个点是被拆成 0 ... .2 从 0 到0.2, 所以是一个 0. 1 ... .2 则是空的手边没有 perl 有编-DDEBUGGING不然应该用 -Dx 看parse tree
作者: cutekid (可爱小孩子)   0000-00-00 00:00:00
哇,scwg 太强了,再推一次有关 4 个点的“猜想”
楼主: AntaresStar   0000-00-00 00:00:00
刚刚用-10....2试了一下 0.2的猜想应该是对的关于第一个问题 那1..2的scalar context要怎么解读呢看来是被当成range operator了 这真是太奇怪了 XD
作者: CindyLinz (Cindy Wang)   0000-00-00 00:00:00
是 flip-flop 正反器.. 至于实用情境嘛... (思)

Links booklink

Contact Us: admin [ a t ] ucptt.com