$value = Session::get('key', 'default_value');$value = Session::get('key', function () { return 'default_value';});上面代码的意思就是根据session的key取得相应的值,当该key相应的值不存在时,返回默认值(default_value)。请问这两种写法有什么区别,第一种很自然能理解,第二种用匿名函数来返回的写法,有什么特定的使用场合吗?请不吝赐教!多谢!
3 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
问你一个问题就知道什么场合用匿名函数了:
假如默认值也是事先不知道,需要事后计算出来的呢?
当然你也可以在调用此方法之前先将默认值算好再传入第二参数,不过这样会有这么一个问题,如果key存在,并不需要默认值的情况下,之前算默认值运行的代码不是都浪费了吗?但是匿名函数不会,匿名函数的萌点在于需要调用它的时候才会运行,你只不过是事先定义好它的运行流程而已。
另外你这个题目有点不太准确,你正文里提到的问题其实跟闭包没什么关系哦
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
session中保存的值可能是字符串、数组、类等各种数据类型,就算是单一数据类型,它表示的意义也存在多种可能,如一本书信息,一个用户信息,一个销量排行等,除此之外,返回一个默认值还有可能要处理一些逻辑、事务等等,在这种情况下,将处理逻辑作为参数传入方法,可以方便的解决这类问题。
class Session{ public static function get(String $key, Closure $func) { // 取key的value,如果为空则调用匿名函数 return $func(); // 只专注于自己的业务(k-v),其它业务委托匿名函数处理。 } }
匿名函数是不需要定义函数名的,可以作为参数传递给其他函数, 通常用于回调函数。
- 3 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消