- Today
- Total
Notice
Recent Posts
Recent Comments
Link
250x250
프로그래밍 농장
액션 / 람수표현식 함수 [ Unity ] 본문
728x90
액션 : C#에서 제공하는 사용하기 쉽게 제공하는 delegate
람다 : 코드 도중에 이름이 없는 함수를 탄생시키고 이를 다양하게 사용가능하다.
기존 delegate 함수의 사용방식 :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Worker : MonoBehaviour
{
//입력, 출력이 없는 함수 대행 (delegate)
delegate void Work();
Work work;
void MoveBricks()
{
Debug.Log("벽돌을 옮겼다");
}
void DigIn()
{
Debug.Log("땅을 팠다");
}
private void Start()
{
work += MoveBricks;
work += DigIn;
}
//Work라는 델리게이트를 만들어놓고 위처럼 할일들만 대행시켜놓는것
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)){
work();
}
}
}
위와 같이 델리게이트 함수 Work() 를 생성해놓고, 이 델리게이트 함수에 MoveBricks() 와 DigIn() 두가지 함수를 대행하고록 위와같이 추가하여주는 방식이다.
하지만, 위와 같은 방식을 사용할 경우, 수많은 델리게이트 함수와 대행 함수를 수없이 생성해주어야한다.
이때 아래와 같이 delegate void Work(); // 델리게이트 함수 를 없애고,
using System; 추가한후
기존 Work 타입의 Work work(); --> Action타입의 Action work(); 로 통일할수있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Worker : MonoBehaviour
{
Action work;
void MoveBricks()
{
Debug.Log("벽돌을 옮겼다");
}
void DigIn()
{
Debug.Log("땅을 팠다");
}
private void Start()
{
work += MoveBricks;
work += DigIn;
}
//Work라는 델리게이트를 만들어놓고 위처럼 할일들만 대행시켜놓는것
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)){
work();
}
}
}
+ 람다식 함수
람다표현식은 특정 변수나 함수명을 지정하지않고, 실시간으로 선언 및 적용할수있는 방식의 표현식이다.
아래와 같이
public void hit (man) {
Debug.Log(" i hit " + man ); }
처럼 함수를 선언후 hit( ) 을 가져와 사용할수도있지만, 아래와 같이 람다표현법으로 즉시 사용도 가능하다.
man => Debug.Log(" i hit " + man );
728x90
'C#' 카테고리의 다른 글
쉽게 배우는 C# 알고리즘 프로그래밍 Part.1 - 1 [ C# ] (0) | 2022.07.13 |
---|---|
쉽게 배우는 C# 알고리즘 프로그래밍 Part.1 - 1 [ C# ] (0) | 2022.07.13 |
C# 프로그래밍_1 (0) | 2022.07.04 |