作者charleshu (Analog Engineer)
看板Perl
标题Re: [问题] foreach if in one line
时间Tue May 18 13:49:02 2010
※ 引述《dryman (dryman)》之铭言:
: 请问有无可能将foreach和if判断式写在同一行呢?
: 原始语意:
: foreach (@arr){
: dosomething if expr;
: }
: 我试了
: dosomething if expr foreach @arr;
: {dosomething if expr} foreach @arr;
: 可是都失败..
: 请问还有其他方法将if和foreach合并在一行吗?
可以用 grep 筛选符合条件的再dosomething
不过你想把它们写在一行的目的是什麽呢?
假如 dosomething 只有一行, 那把3行 (含结束大括号) 改成1行, 好像也没少打多少字.
假如你认为改成一行程式会执行的比较快, 那你可能要失望了.
Perl 虽然是 interpreter, 但它会先将程式 parse 成 P-code後再执行. 原始码的长度
并不会影响其执行速度, 假如结果 P-code 一样的话.
P-Code 的清单请参考 perl 的 source code, 假如你以 -DDEBUGGING 编译 perl, 就可以
再命令列加上 -Dx 印出语法树, 这样你就可以知道你的原始码变成了哪些 P-code, 对分
析程式执行速度很有帮助.
假如你在意的是速度, 我个人建议你用 XS, 把程式改用 C/C++来写, 以我的经验来说,
一个 express parser 我改用 XS 後, 速度快了 16 倍, 这种改善幅度应该不是把程式码
减掉几行所能比的.
--
Do not depend on others without effort...
当我年轻时,请教别人问题时常听到上面那句话. 当时心里偶而会有些小小抱怨.
当时间过去,我偶而会想到上面那句话, 心中十分感谢当初告诉我那句话的人.
当发现问题时,最有价值的不是问题的答案,
而是找到解决的方向,并在努力的过程里具备解决问题的能力.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.232.29
1F:推 dryman:其实...只是想写爽的啦XDDDD 05/18 14:26