백엔드 개발 PHP 튜토리얼 익명 함수란 무엇입니까?

익명 함수란 무엇입니까?

Jan 22, 2019 am 09:23 AM
익명 함수

익명 함수

클로저라고도 불리는 익명 함수를 사용하면 지정된 이름 없이 일시적으로 함수를 만들 수 있습니다. 콜백 함수 인수로 가장 일반적으로 사용되는 값입니다. 물론 다른 응용 프로그램도 있습니다.

익명 함수란 무엇입니까?

익명 함수는 현재 Closure 클래스를 통해 구현됩니다.

익명 함수 예시

<?php
echo preg_replace_callback(&#39;~-([a-z])~&#39;, function ($match) {
    return strtoupper($match[1]);
}, &#39;hello-world&#39;);
// 输出 helloWorld
?>
로그인 후 복사

클로저 함수를 변수의 값으로 사용할 수도 있습니다. PHP는 자동으로 이 표현식을 내장 클래스 Closure의 객체 인스턴스로 변환합니다. 클로저 객체를 변수에 할당하는 방법은 일반 변수 할당 구문과 동일하며 끝에 세미콜론도 추가합니다.

익명 함수 변수 할당 예

<?php
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet(&#39;World&#39;);
$greet(&#39;PHP&#39;);
?>
로그인 후 복사

클로저는 부모로부터 변수를 상속받을 수 있습니다. 범위 . 이러한 변수는 사용 언어 구성을 사용하여 전달되어야 합니다. PHP 7.1부터 superglobals, $this 또는 매개변수와 동일한 이름을 갖는 변수는 전달할 수 없습니다.

상위 범위에서 변수 상속

<?php
$message = &#39;hello&#39;;

// 没有 "use"
$example = function () {
    var_dump($message);
};
echo $example();

// 继承 $message
$example = function () use ($message) {
    var_dump($message);
};
echo $example();

// Inherited variable&#39;s value is from when the function
// is defined, not when called
$message = &#39;world&#39;;
echo $example();

// Reset message
$message = &#39;hello&#39;;

// 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 = &#39;world&#39;;
echo $example();

// Closures can also accept regular arguments
$example = function ($arg) use ($message) {
    var_dump($arg . &#39; &#39; . $message);
};
$example("hello");
?>
로그인 후 복사

위 루틴의 출력은 다음과 유사합니다.

Notice: Undefined variable: message in /example.php on line 6
NULL
string(5) "hello"
string(5) "hello"
string(5) "hello"
string(5) "world"
string(11) "hello world"
로그인 후 복사

이러한 변수는 함수 또는 클래스의 헤드에서 선언되어야 합니다. 상위 범위에서 변수를 상속하는 것은 전역 변수를 사용하는 것과 다릅니다. 전역 변수는 현재 실행 중인 함수에 관계없이 전역 범위에 존재합니다. 클로저의 상위 범위는 클로저를 정의하는 함수입니다(반드시 이를 호출하는 함수일 필요는 없음).

클로저 및 범위 예시:

<?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(&#39;butter&#39;, 1);
$my_cart->add(&#39;milk&#39;, 3);
$my_cart->add(&#39;eggs&#39;, 6);

// 打出出总价格,其中有 5% 的销售税.
print $my_cart->getTotal(0.05) . "\n";
// 最后结果是 54.29
?>
로그인 후 복사

이 글은 익명 함수에 대한 소개입니다. 도움이 필요한 친구들에게 도움이 되기를 바랍니다!

위 내용은 익명 함수란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C++ 익명 함수의 사용법과 특징 C++ 익명 함수의 사용법과 특징 Apr 19, 2024 am 09:03 AM

람다 식이라고도 하는 익명 함수는 이름을 지정하지 않고 일회용으로 사용하거나 함수 포인터를 전달하는 데 사용되는 함수입니다. 기능에는 익명성, 일회용 사용, 폐쇄, 반환 유형 추론이 포함됩니다. 실제로는 정렬이나 기타 일회성 함수 호출에 자주 사용됩니다.

Golang 함수의 익명 함수 적용 시나리오 분석 Golang 함수의 익명 함수 적용 시나리오 분석 May 16, 2023 pm 10:51 PM

최신 프로그래밍 언어인 Golang(Go 언어라고도 함)에는 많은 강력한 기능이 있습니다. 그 중 익명 함수는 Golang에서 매우 중요한 개념이며 다양한 시나리오에서 널리 사용됩니다. 이 기사에서는 Golang 함수에서 익명 함수의 적용 시나리오를 심층적으로 분석합니다. 이벤트 핸들러 이벤트 핸들러에서 익명 함수는 매우 편리하고 실용적인 도구입니다. 사용자 정의 로직은 funcmain(){bt와 같은 익명 함수를 통해 이벤트 핸들러에 전달될 수 있습니다.

보다 유연한 코드 논리 처리를 달성하기 위해 PHP7의 익명 함수 및 클로저를 사용하는 방법은 무엇입니까? 보다 유연한 코드 논리 처리를 달성하기 위해 PHP7의 익명 함수 및 클로저를 사용하는 방법은 무엇입니까? Oct 21, 2023 am 10:21 AM

보다 유연한 코드 논리 처리를 달성하기 위해 PHP7의 익명 함수 및 클로저를 사용하는 방법은 무엇입니까? PHP7 이전에는 함수를 사용하여 특정 로직 부분을 캡슐화한 다음 코드에서 이러한 함수를 호출하여 특정 기능을 구현하는 경우가 많았습니다. 그러나 때로는 코드에서 일부 임시 논리 블록을 정의해야 할 수도 있습니다. 이러한 논리 블록은 독립적인 함수를 생성할 필요가 없으며 동시에 코드에 너무 많은 전역 변수를 도입하고 싶지 않습니다. PHP7에는 이 문제를 매우 잘 해결할 수 있는 익명 함수와 클로저가 도입되었습니다. 익명 함수는 이름이 없는 함수입니다.

Golang 익명 함수는 여러 값을 반환할 수 있나요? Golang 익명 함수는 여러 값을 반환할 수 있나요? Apr 13, 2024 pm 04:09 PM

예, Go 언어의 익명 함수는 여러 값을 반환할 수 있습니다. 구문: func(arg1,arg2,...,argN)(ret1,ret2,...,retM){//함수 본문}. 사용법: 반환 값을 받으려면 := 연산자를 사용하고, 여러 값을 반환하려면 return 키워드를 사용하세요.

PHP8.0의 익명 함수 PHP8.0의 익명 함수 May 14, 2023 am 08:31 AM

PHP8.0은 PHP 프로그래밍 언어의 최신 버전입니다. 중요한 업데이트 중 하나는 익명 기능의 개선 및 향상입니다. 익명 함수(클로저라고도 함)는 런타임에 동적으로 생성되어 다른 함수에 전달되거나 변수에 저장될 수 있는 특수한 유형의 함수입니다. PHP에서 익명 함수는 고급 프로그래밍 및 웹 개발에 매우 ​​중요합니다. PHP8.0은 익명 함수를 더욱 유연하고 사용하기 쉽게 만드는 몇 가지 새로운 구문과 기능을 제공합니다. 일부 업데이트는 다음과 같습니다: PHP8.0의 함수 매개변수에 대한 유형 선언,

Python 람다 표현식: 프로그래밍을 더 쉽게 만들기 Python 람다 표현식: 프로그래밍을 더 쉽게 만들기 Feb 19, 2024 pm 09:54 PM

Python Lambda 표현식은 변수에 표현식을 저장하고 해당 값을 반환하는 작은 익명 함수입니다. 람다 표현식은 별도의 함수를 작성하여 수행할 수 있는 간단한 작업을 수행하는 데 자주 사용되지만, 람다 표현식을 사용하면 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. Lambda 표현식의 구문은 다음과 같습니다. 람다 인수: 표현식 인수는 람다 표현식에서 수신한 매개변수 목록이고 표현식은 실행해야 하는 코드가 포함된 람다 표현식의 본문입니다. 예를 들어 다음 Lambda 표현식은 두 숫자를 더하고 해당 합계를 반환합니다.

Python 람다 표현식: 축약형, 간결함, 강력함 Python 람다 표현식: 축약형, 간결함, 강력함 Feb 19, 2024 pm 08:10 PM

pythonLambda 표현식은 간결하고 읽기 쉽고 사용하기 쉬운 코드를 생성하기 위한 강력하고 유연한 도구입니다. 다른 함수에 인수로 전달되거나 변수에 저장될 수 있는 익명 함수를 빠르게 생성하는 데 유용합니다. Lambda 표현식의 기본 구문은 다음과 같습니다.lambdaarguments:expression예를 들어 다음 Lambda 표현식은 두 개의 숫자를 추가합니다.lambdax,y:x+y 이 Lambda 표현식은 다음과 같이 다른 함수에 인수로 전달될 수 있습니다. defsum( x ,y):returnx+yresult=sum(lambdax,y:x+y,1,2)이 예에서는

보다 유연하고 재사용 가능한 코드 로직을 달성하기 위해 PHP7의 익명 함수 및 클로저를 사용하는 방법은 무엇입니까? 보다 유연하고 재사용 가능한 코드 로직을 달성하기 위해 PHP7의 익명 함수 및 클로저를 사용하는 방법은 무엇입니까? Oct 24, 2023 am 10:30 AM

보다 유연하고 재사용 가능한 코드 로직을 달성하기 위해 PHP7의 익명 함수 및 클로저를 사용하는 방법은 무엇입니까? PHP 프로그래밍 세계에서 익명 함수와 클로저는 매우 귀중하고 강력한 도구입니다. PHP7에는 익명 함수와 클로저를 보다 편리하고 유연하게 사용할 수 있는 몇 가지 새로운 언어 기능이 도입되었습니다. 이 기사에서는 PHP7의 익명 함수 및 클로저를 사용하여 보다 유연하고 재사용 가능한 코드 논리를 달성하는 방법을 소개하고 몇 가지 구체적인 코드 예제를 제공합니다. 1. 익명 함수 익명 함수는 이름이 없는 함수입니다. PHP에서는 익명을 사용할 수 있습니다

See all articles