[問題] foreach if in one line

看板Perl作者 (dryman)時間14年前 (2010/05/12 17:44), 編輯推噓11(11010)
留言21則, 7人參與, 最新討論串1/3 (看更多)
請問有無可能將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

05/12 17:53, , 1F
foreach (@arr) {dosomething if expr;} 如何
05/12 17:53, 1F

05/12 17:59, , 2F
現在就是這樣寫,不過不知道能不能有省略一堆括號的寫法
05/12 17:59, 2F

05/12 19:17, , 3F
map { dosomething } grep { expr } @arr;
05/12 19:17, 3F

05/12 21:48, , 4F
我發現我程式描述的不明確(汗)
05/12 21:48, 4F

05/12 21:49, , 5F
$maxvec=$_ if &norm($maxvec) > &norm($_) foreach @vecs;
05/12 21:49, 5F

05/12 21:51, , 6F
我的輸出資料是scalar而不是array..
05/12 21:51, 6F

05/12 22:13, , 7F
scalar map { dosomething } grep { expr } @arr; XD
05/12 22:13, 7F

05/13 00:33, , 8F
$max = (n($max)>n($_)) ? $_ : $max foreach @vecs; 呢
05/13 00:33, 8F

05/13 00:59, , 9F
樓上強大!
05/13 00:59, 9F

05/13 00:59, , 10F
又學了一招~
05/13 00:59, 10F

05/13 04:53, , 11F
&norm($maxvec) > &norm($_) and $maxvec=$_ for @vecs;
05/13 04:53, 11F

05/13 05:19, , 12F
好怪... 這是求最大值還是最小值呀..?
05/13 05:19, 12F

05/13 05:23, , 13F
最大值 $maxvec=(sort {&norm($b)<=>&norm($a)} @vecs)[0];
05/13 05:23, 13F

05/13 17:12, , 14F
啊...我貼上來的時候大小於寫錯了:P
05/13 17:12, 14F

05/13 20:22, , 15F
sort的版本快38%~ 是否要求最大值用sort通常會比較快啊@ @
05/13 20:22, 15F

05/13 20:22, , 16F
因為有內建的merge sort演算法?
05/13 20:22, 16F

05/13 21:04, , 17F
我用65536個亂數去試, 是11樓比較快耶... 記得改成小於...
05/13 21:04, 17F

05/13 21:28, , 18F
噢~~;您們真是邪惡Orz
05/13 21:28, 18F

05/13 21:34, , 19F
嗯,11樓用and最快,foreach(){}其次,<=>第三 :? 第四
05/13 21:34, 19F

05/13 23:22, , 20F
sort的時間會隨著陣列的大小而有明顯的差異唷...
05/13 23:22, 20F

05/16 18:40, , 21F
dm4厲害!
05/16 18:40, 21F
文章代碼(AID): #1BwdXYkT (Perl)
討論串 (同標題文章)
文章代碼(AID): #1BwdXYkT (Perl)