[C#/Unity] switch-expression

조재훈·2024년 2월 21일

개요

유니티 프로젝트를 하다가 switch문을 사용해야 할 때가 있었는데 분기가 많아 코드가 복잡해 보일까봐 방법을 찾다가 발견한 구문인데, 유니티가 버전업을 하면서 C#도 최신 버전으로 업데이트 되면서 switch문도 달라졌다고 보았다.
코드를 작성할 당시에는 그냥 '오 이 방법 좋아보이는데' 하고 단순히 사용만 하고 넘어갔는데 유니티를 쓰는 개발자라면 알아두는 것이 좋을 것 같아 글로 간략하게 정리해보려고 한다

switch-expression

우선 내가 프로젝트에서 사용한 부분을 보자

public static bool operator >(Element tile, Element unit)
{
    return tile.elementType switch
    {
        ElementType.Fire when unit.elementType == ElementType.Grass => true,
        ElementType.Fire => false,
        ElementType.Water when unit.elementType == ElementType.Fire => true,
        ElementType.Water => false,
        ElementType.Grass when unit.elementType == ElementType.Water => true,
        ElementType.Grass => false,
        _ => false
    };
}

속성 간 우위관계를 파악하기 위한 연산자 오버로딩인데 조건이 많아 만약 일반적인 switch 문으로 작성했다면 세로로 긴 코드가 나왔을 것이다(사실 이 기법을 모르는 사람이라면 그렇게 적는게 무엇을 수행하는 코드인지 더 잘 알 수 있을 것 같지만 우리는 항상 발전하는 개발자이므로 새로운 기술도 배우자)

tile.elementType이 기존 switch(조건)에서의 조건에 해당하고 when 앞에 있는 변수들이 기존 case문에 해당한다.
그 후 when으로 조건을 설정해 람다식처럼 =>로 리턴값을 돌려준다

참고

사실 블로그로만 봐서는 잘 이해가 안가는데 공식 문서를 자세히 읽어보는 것도 좋을 것 같다

profile
나태지옥

0개의 댓글