zyeon's 작심삼일 코딩 공부
C#에서 람다식 본문
C#에서 '=>' 연산자는 람다식을 만들 때 사용한다.
람다식
Func<int, int, int> add = (a, b) => a + b;
add(2, 3); // 5 출력
Func 델리게이트는 람다식을 저장하고 호출하는데 사용된다.
제네릭 타입을 사용해 매개변수와 반환 타입을 정의한다.
Func<int, int, int>에서 앞에 두 int는 입력 매개변수이고, 세 번 째 int는 반환값을 나타낸다.
람다를 이용한 LINQ 쿼리 사용
int[] numbers = { 1, 2, 3 };
var squaredNumbers = numbers.Select(x => x * x);
Console.WriteLine(string.Join(", ", squaredNumbers) // 1, 4, 9 출력
우선 LINQ 쿼리는 SQL과 유사한 방식으로 데이터를 관리해주는 기능이라고 한다.
SQL과 같은 키워드가 많고 기능도 동일하다.
위 코드에선 Select()가 LINQ 메서드 체이닝을 사용해 배열의 각 요소를
'x => x * x' 람다식에 맞게 변환해 주는 역할을 한다.
타입을 명시하지 않고 var을 사용하면 컴파일러가 타입을 자동 추론해준다. c++에서 auto의 기능과 같아 보인다.
위 코드에선 IEnumerable<int> 타입의 결과로 저장해 모든 요소를 순회할 수 있게 해준다.
Join() 모든 요소를 문자열로 변환하여 쉼표와 공백으로 구분된 문자열을 생성한다.
SQL이 기억이 잘 나지않아 여기서 사용된 select와 join만 간단히 정리해보았다.
LINQ와 람다식을 활용하면 데이터 분석과 변환에 용이하다.
식 본문 멤버
returnType MethodName (parametrers) => experssion;
int Add (int a, int b) => a + b;
실제로는 위와 같이 반환타입 함수명 (파라미터) => 실행코드;와 같은 형태를 주로 사용할 것 같다.
dialogText.DOText(dialogData, dialogData.Length * 0.08f).OnComplete(() => isTyping = false);
유니티를 하면서 콜백 함수에 람다식을 자주 주는 것 같아서 정리해보았다.
위 코드의 '() => obj.gameObject.SetActive(false)' 처럼 람다식에 이름을 안주고 사용할 수도 있다.
'unity' 카테고리의 다른 글
2.5D 게임에서 캐릭터 이동 구현 (0) | 2024.08.28 |
---|---|
오브젝트 풀링 (오브젝트 풀 패턴) (0) | 2024.08.24 |
싱글톤 패턴 (0) | 2024.08.22 |
WorldToScreenPoint, ScreenToWorldPoint (0) | 2024.08.20 |
Camera.main 오류 (CS1061) (0) | 2024.08.09 |