看板 Perl 關於我們 聯絡資訊
請問有無可能將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
dm4:foreach (@arr) {dosomething if expr;} 如何 05/12 17:53
dryman:現在就是這樣寫,不過不知道能不能有省略一堆括號的寫法 05/12 17:59
zard1989:map { dosomething } grep { expr } @arr; 05/12 19:17
dryman:我發現我程式描述的不明確(汗) 05/12 21:48
dryman:$maxvec=$_ if &norm($maxvec) > &norm($_) foreach @vecs; 05/12 21:49
dryman:我的輸出資料是scalar而不是array.. 05/12 21:51
CindyLinz:scalar map { dosomething } grep { expr } @arr; XD 05/12 22:13
dm4:$max = (n($max)>n($_)) ? $_ : $max foreach @vecs; 呢 05/13 00:33
dryman:樓上強大! 05/13 00:59
dryman:又學了一招~ 05/13 00:59
giacch:&norm($maxvec) > &norm($_) and $maxvec=$_ for @vecs; 05/13 04:53
giacch:好怪... 這是求最大值還是最小值呀..? 05/13 05:19
giacch:最大值 $maxvec=(sort {&norm($b)<=>&norm($a)} @vecs)[0]; 05/13 05:23
dryman:啊...我貼上來的時候大小於寫錯了:P 05/13 17:12
dryman:sort的版本快38%~ 是否要求最大值用sort通常會比較快啊@ @ 05/13 20:22
dryman:因為有內建的merge sort演算法? 05/13 20:22
giacch:我用65536個亂數去試, 是11樓比較快耶... 記得改成小於... 05/13 21:04
herculus6502:噢~~;您們真是邪惡Orz 05/13 21:28
dryman:嗯,11樓用and最快,foreach(){}其次,<=>第三 :? 第四 05/13 21:34
giacch:sort的時間會隨著陣列的大小而有明顯的差異唷... 05/13 23:22
zarcen:dm4厲害! 05/16 18:40