这种一句话的 if, else 有没有优雅的处理方法?

2015-03-20 09:57:11 +08:00
 blue7wings
if ($is_false)
$this->rollback();
else
$this->commit();

有没有像三元运算符那样,一条语句就搞定的?
10326 次点击
所在节点    PHP
73 条回复
mengzhuo
2015-03-20 09:58:22 +08:00
Readability counts.
b821025551b
2015-03-20 10:01:15 +08:00
直接三元就行了
lizheming
2015-03-20 10:02:00 +08:00
额,这个不可以写成三元么?
xjliao
2015-03-20 10:02:02 +08:00
同意3楼
griffinqiu
2015-03-20 10:04:35 +08:00
$is_false && $this->rollback() || $this->commit();

PHP是世界上最好的语言没有之一。
killerand1983
2015-03-20 10:07:26 +08:00
echo $is_false ? $this->rollback() : $this->commit()
ALeo
2015-03-20 10:11:01 +08:00
用if else 就好了,好像效率还更高一点..

顺便说一句,我真的看不惯别人写这种语句不加花括号...
mcfog
2015-03-20 10:12:44 +08:00
这种情况就应该写多行没事把几句话硬挤在一起写就好像说话不停顿写字不加标点不仅不优雅简直就是在讨打
killerand1983
2015-03-20 10:14:05 +08:00
@griffinqiu 这个是什么语法呢?求解
b821025551b
2015-03-20 10:14:16 +08:00
@griffinqiu 你这是什么???
zhicheng
2015-03-20 10:16:24 +08:00
难道,大家都没有听说过函数这个东西吗?
lyragosa
2015-03-20 10:17:19 +08:00
@griffinqiu 窝巢,这个神了……
br00k
2015-03-20 10:17:45 +08:00
@griffinqiu 这样是错的。第一个为false,后面2个都不会执行。用三元没问题。
haiyang416
2015-03-20 10:19:25 +08:00
@killerand1983 不要用 @griffinqiu 的写法。
Arrowing
2015-03-20 10:19:48 +08:00
@griffinqiu 你这个是错的,如果$is_false为true的话,2个方法都会执行到。
kmvan
2015-03-20 10:20:55 +08:00
wp源码,经常有

if(true)
return;
br00k
2015-03-20 10:21:45 +08:00
@Arrowing 为true的话,如果$this->rollback()返回false才会继续执行。返回true就不会执行||后面的了
ETiV
2015-03-20 10:27:55 +08:00
三元:

TrueOrFalse ? ExecTrue : ExecFalse

某楼那个是(几乎?)所有高级点儿的编程语言的特性
&& 左边是 false 的时候直接返回 false,不执行右边的
|| 相反,左边是 true 的时候直接返回 true,不执行右边的
killerand1983
2015-03-20 10:29:46 +08:00
@griffinqiu 研究了十分钟终于懂了
(a && b ) || c
killerand1983
2015-03-20 10:30:17 +08:00
@griffinqiu 研究了十分钟终于懂了
((a) && (b) ) || c

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/178153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX