亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下是我想請教大家的具體問題哈,求大佬指點

如下是我想請教大家的具體問題哈,求大佬指點

PHP
蝴蝶刀刀 2023-04-14 22:18:35
$value = Session::get('key', 'default_value');$value = Session::get('key', function () { return 'default_value';});上面代碼的意思就是根據session的key取得相應的值,當該key相應的值不存在時,返回默認值(default_value)。請問這兩種寫法有什么區別,第一種很自然能理解,第二種用匿名函數來返回的寫法,有什么特定的使用場合嗎?請不吝賜教!多謝!
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

問你一個問題就知道什么場合用匿名函數了:

假如默認值也是事先不知道,需要事后計算出來的呢?

當然你也可以在調用此方法之前先將默認值算好再傳入第二參數,不過這樣會有這么一個問題,如果key存在,并不需要默認值的情況下,之前算默認值運行的代碼不是都浪費了嗎?但是匿名函數不會,匿名函數的萌點在于需要調用它的時候才會運行,你只不過是事先定義好它的運行流程而已。

另外你這個題目有點不太準確,你正文里提到的問題其實跟閉包沒什么關系哦


查看完整回答
反對 回復 2023-04-17
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

session中保存的值可能是字符串、數組、類等各種數據類型,就算是單一數據類型,它表示的意義也存在多種可能,如一本書信息,一個用戶信息,一個銷量排行等,除此之外,返回一個默認值還有可能要處理一些邏輯、事務等等,在這種情況下,將處理邏輯作為參數傳入方法,可以方便的解決這類問題。

class Session{  public static function get(String $key, Closure $func)  {    // 取key的value,如果為空則調用匿名函數
    return $func(); // 只專注于自己的業務(k-v),其它業務委托匿名函數處理。
  }
}

匿名函數是不需要定義函數名的,可以作為參數傳遞給其他函數, 通常用于回調函數。


查看完整回答
反對 回復 2023-04-17
?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

對數組操作的時候可能會用到匿名函數比如

usort($array,function($itema,$itemb){    //code..
});


查看完整回答
反對 回復 2023-04-17
  • 3 回答
  • 0 關注
  • 125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號