개발 TIL

6/12 부트캠프 개발 TIL (Switch식)

HJTL 2024. 6. 13. 21:05

오늘 배운 내용은 함수형 Switch식이다.

 

C#에서 8.0부터 지원하며 일반적으로

switch(value)
{
    case 1:
    //case 1 코드
    break;
    case 2:
    //case 2 코드
    break;
    ...
}

 

이렇게 사용했지만

public enum StatChangeType
{
	Add,
    Multiple
}

Func<float, float, float> operation = modifier.statsChangeType switch
{
	StatChangeType.Add => (current, change) => current + change;
    StatChangeType.Multiple => (current, change) => current * change;
    _ => (current, change) => change,	//default를 받았을 때
};

 

이런 람다식으로 사용한다.

 

이 문법이 너무 복잡해서 쉽게 설명하자면

public enum Calculate
{
    Sum,
    Sub,
    Mul
}

public class FuncSwitch : MonoBehaviour
{
    public Calculate calcType;
    public int Num1;
    public int Num2;

    void Start()
    {
        StartingCalculate(calcType);
    }

    void StartingCalculate(Calculate type)	//enum을 받아서
    {
        Func<int, int, int> calculate = calcType switch
        {
        	//먼저 타입을 판별한 다음에
            Calculate.Sum => (num1, num2) => num1 + num2,
            Calculate.Sub => (num1, num2) => num1 - num2,
            Calculate.Mul => (num1, num2) => num1 * num2,
            _ => (num1, num2) => num1
        };

        ApplyCalculate(calculate);
    }

    void ApplyCalculate(Func<int, int, int> calc) //결과로 적용
    {
        Debug.Log(calc(Num1, Num2));
    }
}

 

switch문을 먼저 돌면서 이게 Sum인지, Sub인지, Mul인지를 확인하고 ApplyCalculate의 매개변수타입으로 전달하여 결정한 연산을 calc의 파라미터로 수행한다.

 

 

컴포넌트에 적용하면 이렇게 나온다.

 

by 스파르타 코딩클럽