FALSE_IT
2015-06-30 15:27
337 查看
本文讲一个有用的语法糖(suger),非常不错,解决了我实际工作中的问题。
假设你写了这样一个类:
就因为一个void返回,让代码一下子别扭了,丑不丑?
如果能这样写该多好:
其实办法是有的,只需要写这样一个宏:
漂亮不!本方法来自阿里巴巴 OceanBase团队 @符风 同学。
假设你写了这样一个类:
class Executor { int step1(); void step2(); int step3(); } #define FAIL -1 int main() { // 使用Executor,调用顺序必须是1、2、3 Executor exec; if (FAIL == exec.step1()) { log('error'); } else { exec.step2(); // 不能通过if调用,因为返回值是void if (FAIL == exec.step3()) { log('error'); } } }
就因为一个void返回,让代码一下子别扭了,丑不丑?
如果能这样写该多好:
Executor exec; if (FAIL == exec.step1()) { log('error'); } else if (FAIL == exec.step2()) { log('error'); } else if (FAIL == exec.step3()) { log('error'); }
其实办法是有的,只需要写这样一个宏:
\#define FALSE_IT(stmt) ({ (stmt); false; })
Executor exec; if (SUCCESS == exec.step1()) { log('error'); } else if (FALSE_IT(exec.step2()) { // 应用FALSE_IT宏 log('error'); // won't be here } else if (FAIL == exec.step3()) { log('error'); }
漂亮不!本方法来自阿里巴巴 OceanBase团队 @符风 同学。
相关文章推荐
- MediaRecorder录音
- 机器学习资料
- Hadoop学习感悟(二)
- java学习笔记之线程
- C++程序的构成和书写形式
- HTML5 Json解析
- AIX swap扩容
- mysql 字符集&校验规则
- 使用Nexus创建本地Maven仓库
- java中List对象转换为JSON对象
- 让table铺满整个td
- Python读写Excel 2007文件(xlsx)
- 数据库连接池和Tomcat连接池的配置问题
- 生成器模式
- 第一个C++程序
- 纽巴伦 2015新款黑白骑士系列
- 欢迎使用CSDN-markdown编辑器
- Nginx启动出错 error while loading shared libraries
- 关于数据库中查找的方法实例
- View跳转到UITabBarViewController(一)