国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

什么是匿名函數

2020-03-22 19:17:13
字體:
來源:轉載
供稿:網友
匿名函數

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

匿名函數目前是通過 Closure 類來實現的。

匿名函數示例

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

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

匿名函數變量賦值示例

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

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

從父作用域繼承變量

 ?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 

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

Closures 和作用域示例:

 ?php// 一個基本的購物車,包括一些已經添加的商品和每種商品的數量。// 其中有一個方法用來計算購物車中所有商品的總價格,該方法使// 用了一個 closure 作為回調函數。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 // 最后結果是 54.29? 

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

以上就是什么是匿名函數的詳細內容,PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内丘县| 孟村| 修文县| 垫江县| 新乐市| 镇原县| 涪陵区| 新竹市| 榕江县| 吉木萨尔县| 昌江| 永年县| 巴林右旗| 海阳市| 潍坊市| 白河县| 军事| 汝南县| 青海省| 金华市| 本溪| 墨江| 绥中县| 永新县| 惠安县| 易门县| 张家口市| 贵港市| 乌拉特前旗| 镇原县| 太白县| 长沙市| 长治市| 泊头市| 犍为县| 原平市| 双城市| 中方县| 若羌县| 云林县| 昌邑市|