Unity/Study

유니티 Property Pattern #패턴 매칭

VR하는소년 2024. 10. 14. 08:00

패턴 매칭이란?

패턴 매칭(Pattern Matching)은 변수나 객체의 데이터 형식, 구조, 값을 검사하고 조건을 만족할 경우 특정 동작을 수행하는 방법입니다. 패턴 매칭을 사용하면 객체나 값이 특정 조건에 맞는지 쉽게 확인할 수 있습니다. 패턴 매칭은 주로 if문이나 switch문에서 많이 사용됩니다. 

 


Property Pattern이란?

Property Pattern은 C# 8.0에서 도입된 패턴 매칭의 한 종류로, 객체의 속성(Property)이나 필드(Field)가 특정 조건을 만족하는지 확인하는 데 사용됩니다. 객체의 속성 값이 null인지 아닌지, 특정 값인지를 쉽게 검사할 수 있습니다.

 

다음은 예제 코드입니다.

private void UpdateCrownPos()
{
    // TreasureUnit의 Id가 null이 아닌 경우에만 id에 값을 할당하고 아이콘을 설정
    if (BoardMapBehaviour.Instance.TreasureUnit.Id is { } id)
    {
        userIconContainer.SetBoardCrownIcon(id);
    }
}

BoardMapBehaviour.Instance.TreasureUnit.Id가 null이 아닌 경우에만 { } 패턴을 통해 id에 할당됩니다.

 

Id가 null일 경우 if 조건이 false가 되어 내부 코드가 실행되지 않으며, null이 아닐 때만 아이콘을 설정하는 동작이 수행됩니다.

 

그렇다면 프로퍼티 패턴을 사용하지 않았다면 어떻게 코드를 작성해야 했을까요?

private void UpdateCrownPos()
{
    if (BoardMapBehaviour.Instance.TreasureUnit.Id != null)
    {
        var id = BoardMapBehaviour.Instance.TreasureUnit.Id;
        userIconContainer.SetBoardCrownIcon(id);
    }
}

위와 같이 코드가 중복되는 경우가 생겨 코드의 양이 길어지게 됩니다.

 

프로퍼티 패턴을 좀 더 확장하면 다음과 같이 여러 속성을 동시에 검사할 수도 있습니다.

if (person is { Name: "John", Age: >= 18 })
{
    Console.WriteLine("John is an adult.");
}