2024. 2. 15. 21:35ㆍ내일배움캠프
2월 15일
어제 나는 Delegate와 Event에 대해서 알아보았다
오늘은 그럼 이어서 Action과 Func에 대해서 정리해 보자
Action/Func
들어가기에 앞서 Action은 반환값이 없다와 Func은 반환값이 있다라고 기억해 두자
Action
- Action은 반환값이 없는 메서드를 참조할 때 사용된다.
- 매개변수의 개수에 따라 다양한 형태로 선언된다.
- 제너릭 타입은 매개변수의 타입을 나타낸다.
- Action<T1, T2, ...>와 같은 형태로 사용된다.
// Action 선언 및 사용 예제
Action<string> printMessage = (message) => Debug.Log(message);
printMessage("Hello, World!"); // "Hello, World!" 출력
어려울 것 없다 그냥 제네릭 형태에 따라서 printMessage의 매개변수에
같은 형태를 입력하여 사용하면 된다.
아차차 매개변수조차 필요하지 않을때는 그냥 Action printMessage 라고 선언하여 사용하면 되겠다.
Func
- Func은 일반적으로 반환값이 있는 메서드를 참조할 때 사용된다.
- 매개변수의 개수에 따라 다양한 형태로 선언된다.
- 마지막 제너릭 타입은 반환 타입을 나타낸다.
- Func<T1, T2, ..., TResult>와 같은 형태로 사용된다.
// Func 선언 및 사용 예제
Func<int, int, int> add = (a, b) => a + b;
int result = add(3, 5); // 8
Action과 다르게 Func는 반환값이 있다는게 차이점이다.
매개변수가 2개가 되던 10개가 되던 마지막 제네릭 타입은 반환형태가 된다
만약 Func에 10개의 매개변수를 가지고싶다면 Func<int,int,int,int ...... 10번째 int, int(반환)> 이렇게 작성하니까
11개의 제네릭 타입을 작성해야겠지?
Action과 Finc는 델리게이트와 마찬가지로 다양한 상황에서 사용하는데 간단한 예제를 가지고 알아보자
using UnityEngine;
using System;
public class FuncActionExample : MonoBehaviour
{
// Func를 사용하여 반환값이 있는 메서드 참조
Func<int, int, int> addFunc;
// Action을 사용하여 반환값이 없는 메서드 참조
Action<string> printAction;
void Start()
{
// Func를 이용한 메서드 참조
addFunc = Add;
int result = addFunc(3, 5);
Debug.Log("Result of addFunc: " + result);
// Action을 이용한 메서드 참조
printAction = PrintMessage;
printAction("Hello from printAction!");
}
// 반환값이 있는 메서드
int Add(int a, int b)
{
return a + b;
}
// 반환값이 없는 메서드
void PrintMessage(string message)
{
Debug.Log(message);
}
}
사실 사용하는 것에 그렇게 큰 어려움은 없다
지난번에 델리게이트와 이벤트를 이해하고 넘어와서 Action과 Func를 봐서 그런지
Action이나 Func을 사용한 다른 사람의 코드를 봐도 해석하는데 그렇게 큰 지장은 없는것 같다.
어제에 이어 오늘은 Action과 Func를 다루어보았다.
팀 프로젝트를 진행중 팀원들이 작성해 놓은 코드들에 Action / Func / Event
여러 코드들이 쏟아져 나오고 있는데 이런 시기에 적절한 학습이었다고 생각한다.
덕분에 나도 팀원들이 만들어둔 이벤트 코드들에 잘 구독하여 UI를 띄운다거나
UI를 감춘다거나 여러가지로 만들어 보고 있고
2월 15일 TIL은 여기서 마치도록 하겠다.
'내일배움캠프' 카테고리의 다른 글
240219-TIL (0) | 2024.02.19 |
---|---|
240216-TIL (0) | 2024.02.16 |
240214-TIL (0) | 2024.02.14 |
240213-TIL (0) | 2024.02.13 |
240208-TIL (0) | 2024.02.08 |