作者dryman (dryman)
看板Perl
标题[问题] foreach if in one line
时间Wed May 12 17:44:00 2010
请问有无可能将foreach和if判断式写在同一行呢?
原始语意:
foreach (@arr){
dosomething if expr;
}
我试了
dosomething if expr foreach @arr;
{dosomething if expr} foreach @arr;
可是都失败..
请问还有其他方法将if和foreach合并在一行吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.46.31
1F:推 dm4:foreach (@arr) {dosomething if expr;} 如何 05/12 17:53
2F:→ dryman:现在就是这样写,不过不知道能不能有省略一堆括号的写法 05/12 17:59
3F:推 zard1989:map { dosomething } grep { expr } @arr; 05/12 19:17
4F:→ dryman:我发现我程式描述的不明确(汗) 05/12 21:48
5F:→ dryman:$maxvec=$_ if &norm($maxvec) > &norm($_) foreach @vecs; 05/12 21:49
6F:→ dryman:我的输出资料是scalar而不是array.. 05/12 21:51
7F:推 CindyLinz:scalar map { dosomething } grep { expr } @arr; XD 05/12 22:13
8F:推 dm4:$max = (n($max)>n($_)) ? $_ : $max foreach @vecs; 呢 05/13 00:33
9F:→ dryman:楼上强大! 05/13 00:59
10F:→ dryman:又学了一招~ 05/13 00:59
11F:推 giacch:&norm($maxvec) > &norm($_) and $maxvec=$_ for @vecs; 05/13 04:53
12F:推 giacch:好怪... 这是求最大值还是最小值呀..? 05/13 05:19
13F:推 giacch:最大值 $maxvec=(sort {&norm($b)<=>&norm($a)} @vecs)[0]; 05/13 05:23
14F:→ dryman:啊...我贴上来的时候大小於写错了:P 05/13 17:12
15F:→ dryman:sort的版本快38%~ 是否要求最大值用sort通常会比较快啊@ @ 05/13 20:22
16F:→ dryman:因为有内建的merge sort演算法? 05/13 20:22
17F:推 giacch:我用65536个乱数去试, 是11楼比较快耶... 记得改成小於... 05/13 21:04
18F:推 herculus6502:噢~~;您们真是邪恶Orz 05/13 21:28
19F:→ dryman:嗯,11楼用and最快,foreach(){}其次,<=>第三 :? 第四 05/13 21:34
20F:推 giacch:sort的时间会随着阵列的大小而有明显的差异唷... 05/13 23:22
21F:推 zarcen:dm4厉害! 05/16 18:40