오늘 배운 내용은 함수형 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 스파르타 코딩클럽
'개발 TIL' 카테고리의 다른 글
6/14 부트캠프 개발 TIL (InputAction으로 UI 조작하기) (1) | 2024.06.14 |
---|---|
6/13 부트캠프 개발 TIL (네트워크) (0) | 2024.06.14 |
6/11 부트캠프 개발 TIL (파티클) (1) | 2024.06.12 |
6/10 부트캠프 개발 TIL (Json 메뉴) (0) | 2024.06.11 |
6/7 부트캠프 개발 TIL (자료구조) (1) | 2024.06.07 |