这在 perl 中不起作用:for(10...0)
它基本上不会循环一次,因为它10>0
最初会检查它。
创建递减迭代for
循环的任何替代简写?
for (map -$_,-10..0) { ... }
for (map 10-$_,0..10) { ... }
如果范围的任何部分为负数,则第一个比 using 短reverse
。
我不确定简洁是否是这样做的一个很好的标准,但你不需要map
在反相解决方案中,也不需要在反转解决方案reverse
中:
# By Inverting without map, one of:
for(-10..0){$_=-$_;say}
for(-10..0){$_*=-1;say}
# Compare to similar length with map:
for(map-$_,-10..0){say}
# Can just use -$_ where $_ is used, if $_ is used < 6 times; that's shorter.
for(-10..0){say-$_}
# By Reversing without reverse (in a sub; in main use @ARGV or @l=...=pop@l)
@_=0..10;while($_=pop){say}
# More Pop Alternatives
for(@_=0..10;$_=pop;say){}
@_=0..10;for(;$_=pop;){say}
@_=0..10;do{say$_=pop}while$_
($_,@_)=(10,0..9);do{say}while($_=pop)
# Though, yeah, it's shorter with reverse
for(reverse 0..10){say}