Menu
Coddy logo textTech

클로저와 'use'

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 2번째.

기본적으로 익명 함수는 매개변수로 전달된 변수에만 접근할 수 있습니다. 하지만 클로저가 주변 범위(scope)의 변수에 접근해야 한다면 어떻게 해야 할까요? 이때 use 키워드가 사용됩니다.

use 키워드는 클로저가 부모 스코프에서 변수를 "캡처"하여 함수 내부에서 사용할 수 있게 해줍니다:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // 출력: Welcome, Bob!
?>

$message가 함수 외부에서 정의되었지만, 매개변수 목록 뒤에 use ($message)를 포함함으로써 클로저가 해당 변수에 접근하고 사용할 수 있다는 점에 주목하세요. 쉼표로 구분하여 여러 변수를 캡처할 수 있습니다: use ($var1, $var2).

이 기능은 클로저를 훨씬 더 강력하게 만들어, 익명 함수의 유연성을 유지하면서도 주변 컨텍스트의 데이터를 활용할 수 있게 해줍니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

challenge icon

챌린지

쉬움

use 키워드를 사용하여 주변 스코프에서 할인율을 캡처하는 익명 함수를 생성하세요. 이 함수는 가격을 매개변수로 받아 할인을 적용한 후의 최종 가격을 반환해야 합니다.

할인율과 원래 가격이라는 두 개의 입력을 받게 됩니다. 두 입력을 모두 읽고, 할인율을 캡처하는 클로저를 생성한 다음, 가격을 인수로 하여 클로저를 호출하고 할인이 적용된 최종 가격을 출력하세요.

입력 형식: 두 줄 - 첫 번째 줄은 할인율(숫자), 두 번째 줄은 원래 가격(소수점을 포함할 수 있는 숫자)을 포함합니다.

예상 출력: 할인이 적용된 후의 최종 가격

치트 시트

use 키워드를 사용하면 클로저가 부모 스코프에서 변수를 캡처할 수 있습니다:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // 출력: Welcome, Bob!
?>

쉼표로 구분하여 여러 변수를 캡처할 수 있습니다: use ($var1, $var2).

직접 해보기

<?php
// 입력 읽기
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));

// TODO: 'use'를 사용하여 할인율을 캡처하는 익명 함수 생성
// 이 함수는 가격 매개변수를 받아 할인이 적용된 최종 가격을 반환해야 함


// TODO: 가격과 함께 클로저를 호출하고 결과를 저장


// 최종 가격 출력
echo $finalPrice;
?>
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨