匿名函数有什么作用

乔治的春天
  • 53

Db::Transaction( function{}())请问这样写匿名函数有什么好处吗?
我个人比较喜欢
分开写

回复
阅读 2k
4 个回答

没有啥好处,语法糖而已

可以很好地控制这个回调什么时候执行,执行前干什么,执行后干什么

就这个场景而言。

try{
    Db::begin();
    // somecode
    Db::commit();
}catch(\Exception $){
    Db::rollback();
    // some exception handle code
}

try{
    Db::transaction(function(){
        //somecode
    });
}catch(\Exception $e){
    // some exception handle code
}

如果不需要 处理错误,第二种代码,都还可以省掉 try...catch{} 。

你更愿意写哪一种?

匿名函数好处还是挺多的,可以总结为以下几点,欢迎补充:

  1. 可以通过 use 关键字获取上下文中的环境变量,减少不必要参数的传入或导出。
  2. 减少不必要的函数暴露,提高代码的可读性

    • 如果使用匿名函数,该函数仅仅会在被调用处使用,其他地方不会引用到。
    • 如果不使用匿名函数,该函数可以在其他地方被引用。从可读性上讲,没有匿名函数可读性高。
宣传栏