麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > FAQ問答 > 正文

什么是匿名函數(shù)

2020-03-22 19:17:13
字體:
供稿:網(wǎng)友
匿名函數(shù)

匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures),允許 臨時創(chuàng)建一個沒有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值。當然,也有其它應(yīng)用的情況。

匿名函數(shù)目前是通過 Closure 類來實現(xiàn)的。

匿名函數(shù)示例

 ?phpecho preg_replace_callback( ~-([a-z])~ , function ($match) { return strtoupper($match[1]);}, hello-world // 輸出 helloWorld? 

閉包函數(shù)也可以作為變量的值來使用。PHP 會自動把此種表達式轉(zhuǎn)換成內(nèi)置類 Closure 的對象實例。把一個 closure 對象賦值給一個變量的方式與普通變量賦值的語法是一樣的,最后也要加上分號:

匿名函數(shù)變量賦值示例

 ?php$greet = function($name) printf( Hello %s/r/n , $name);$greet( World $greet( PHP ? 

閉包可以從父作用域中繼承變量。 任何此類變量都應(yīng)該用 use 語言結(jié)構(gòu)傳遞進去。 PHP 7.1 起,不能傳入此類變量: superglobals、 $this 或者和參數(shù)重名。

從父作用域繼承變量

 ?php$message = hello // 沒有 use $example = function () { var_dump($message);echo $example();// 繼承 $message$example = function () use ($message) { var_dump($message);echo $example();// Inherited variable s html' target='_blank'>value is from when the function// is defined, not when called$message = world echo $example();// Reset message$message = hello // Inherit by-reference$example = function () use ( $message) { var_dump($message);echo $example();// The changed value in the parent scope// is reflected inside the function call$message = world echo $example();// Closures can also accept regular arguments$example = function ($arg) use ($message) { var_dump($arg . . $message);$example( hello ? 

以上例程的輸出類似于:

Notice: Undefined variable: message in /example.php on line 6string(5) hello string(5) hello string(5) hello string(5) world string(11) hello world 

這些變量都必須在函數(shù)或類的頭部聲明。 從父作用域中繼承變量與使用全局變量是不同的。全局變量存在于一個全局的范圍,無論當前在執(zhí)行的是哪個函數(shù)。而 閉包的父作用域是定義該閉包的函數(shù)(不一定是調(diào)用它的函數(shù))。

Closures 和作用域示例:

 ?php// 一個基本的購物車,包括一些已經(jīng)添加的商品和每種商品的數(shù)量。// 其中有一個方法用來計算購物車中所有商品的總價格,該方法使// 用了一個 closure 作為回調(diào)函數(shù)。class Cart const PRICE_BUTTER = 1.00; const PRICE_MILK = 3.00; const PRICE_EGGS = 6.95; protected $products = array(); public function add($product, $quantity) $this- products[$product] = $quantity; public function getQuantity($product) return isset($this- products[$product]) ? $this- products[$product] : FALSE; public function getTotal($tax) $total = 0.00; $callback = function ($quantity, $product) use ($tax, $total) $pricePerItem = constant(__CLASS__ . ::PRICE_ . strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); array_walk($this- products, $callback); return round($total, 2);;$my_cart = new Cart;// 往購物車里添加條目$my_cart- add( butter , 1);$my_cart- add( milk , 3);$my_cart- add( eggs , 6);// 打出出總價格,其中有 5% 的銷售稅.print $my_cart- getTotal(0.05) . /n // 最后結(jié)果是 54.29? 

本篇文章就是匿名函數(shù)的介紹,希望對需要的朋友有所幫助!

以上就是什么是匿名函數(shù)的詳細內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 午夜精品久久久久久久爽 | 九九热视频这里只有精品 | 国产精品免费一区二区三区都可以 | 欧美1区2区在线观看 | 伊人一二三四区 | 午夜影院在线免费观看 | 精品一区二区免费视频视频 | 玖草在线资源 | 性爱视频免费 | 日本高清一级片 | 日韩一级片一区二区三区 | 一级免费 | 叶子楣成人爽a毛片免费啪啪 | 撅高 自己扒开 调教 | 一本一本久久a久久精品综合小说 | 天天透天天狠天天爱综合97 | av色先锋 | 国产在线精品一区二区夜色 | 竹内纱里奈和大战黑人 | 麻豆传传媒久久久爱 | 欧美一级黄 | 久久午夜国产 | 亚洲一区二区三区精品在线观看 | 欧美一级黄色片免费观看 | 夜夜看 | chinese18 xxxx videos| 国产精品视频专区 | 亚洲自拍第二页 | 欧美一级一区二区三区 | 亚洲国产一区二区三区 | 国产99久久久久久免费看农村 | 欧美人成在线 | 成年人免费视频播放 | 欧美国产日韩在线 | 久久免费视频一区二区三区 | 午夜男人免费视频 | 国产精品久久久久久影院8一贰佰 | 在线中文字幕播放 | 逼片视频 | 久久影院一区二区三区 | 在线观看福利网站 |