240215-TIL

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