일치 표현 (From the office!)

일치 표현(사무실에서!)



안녕하세요, 저는 니코입니다.

저는 런던에 본사를 둔 티켓 브로커의 수석 엔지니어입니다.

사무실에서! 일상적인 사무실 생활에서 제가 하고 있는 기술적인 일에 대해 계속 일기를 쓰는 매일의 (거의) 포스팅 루틴입니다.

PHP 8



2020년 11월 26일, 핵심 PHP 팀은 가장 빠르고 더 나은 최신 버전의 언어를 출시합니다.

생성자 속성 프로모션*,* Nullsafe 연산자 등과 같은 모든 놀라운 새 기능과 키워드 중에서 대다수의 개발자에게 정말 눈에 띄는 기능이 있습니다.

나는 일치 표현에 대해 이야기하고 있습니다

매치 식



match 표현식을 switch 문의 진화라고 생각하십시오.

이것이 하는 일은 주제 표현식을 평가하고 경우에 따라 다른 블록이나 코드 또는 명령문으로 분기하는 것입니다.

스위치와 달리 비교는 약한 동등성 검사(==)가 아닌 동일성 검사(===)입니다.

$food = 'cake';

$returnValue = match ($food) {
    'apple' => 'This food is an apple',
    'bar' => 'This food is a bar',
    'cake' => 'This food is a cake',
};

var_dump($returnValue);
// string(19) "This food is a cake"


왜 사용하나요?



언어의 이 새로운 기능을 사용하면 많은 긍정적인 측면이 있습니다.

예를 들어, switch 문을 사용할 때 가장 성가신 점 중 하나는 코드 블록을 깨기 위해 the를 사용하는 것을 잊지 말아야 한다는 것입니다.

더 이상 휴식이 없습니다!

그렇게 하지 않으면 다음과 같은 경우 코드가 계속 실행됩니다.

이것은 물론 오류와 예상치 못한 결과로 이어졌습니다.

$i = 0;

switch ($i) {
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}

"i equals 0"
"i equals 1"


일치 표현식은 값을 반환합니다.

위의 예시에서 보셨겠지만, 매치 블록 내부는 배열처럼 생겼고, 매칭 조건의 값은 실제로 변수에 반환되는 값입니다.

일치 식은 조건식이 true인 한 비식별 조건 사례도 처리합니다.

다음은 예입니다.

$result = match (true) {
    $age >= 65 => 'senior',
    $age >= 25 => 'adult',
    $age >= 18 => 'young adult',
    default => 'kid',
};


스위치와 마찬가지로 팔에는 쉼표로 구분된 여러 표현식이 포함될 수 있습니다.

$result = match ($x) {
    // This match arm:
    $a, $b, $c => 5,
    // Is equivalent to these three match arms:
    $a => 5,
    $b => 5,
    $c => 5,
};


스위치에서 물려받은 또 다른 기능은 기본 케이스입니다.

$expressionResult = match ($condition) {
    1, 3 => getFromEvens(),
    2, 4 => getFromOdds(),
    default => GetAll(),
};


조건이 이전 사례(1, 2, 3 또는 4)와 동일하지 않은 경우에만 GetAll() 함수가 호출됩니다.

오류가 발생하므로 기본 조건을 여러 개 입력하지 마세요!

이를 처리하는 더 좋은 방법은 표현식을 try-catch 블록 안에 래핑하는 것입니다.

$condition = 5;

try {
    match ($condition) {
        1, 2 => foo(),
        3, 4 => bar(),
    };
} catch (UnhandledMatchError $e) {
    var_dump($e);
}


단점



실제로 사용하는 데 아무런 단점이 없습니다.

제 생각에는 구문이 switch 문보다 더 깨끗하고 더 우아한 방식으로 결과를 처리합니다.

내가 사용하지 않는 유일한 이유는 2~3개의 경우만 필요한 경우입니다.

그런 경우에는 대신 두 개의 단일 if 문을 선택할 수 있습니다.

당신의 테이크는 무엇입니까?



일치 표현식을 이미 사용해 보셨습니까?

그것의 사용 사례는 무엇입니까?

아래 의견에 귀하의 예를 보여주십시오.

결론



저는 거의 10년 동안 웹 개발자였습니다.

런던 중심부에 위치한 세계적인 기업 및 수상 경력에 빛나는 마케팅 대행사와 협력합니다.

또한 블로그와 온라인 커뮤니티에 기사와 튜토리얼을 작성하고 기업이 온라인에서 입지를 구축하도록 돕습니다.

Click here to read more than 100+ of my blog post

좋은 웹페이지 즐겨찾기