Unity NOPE
개발기를 담은 블로그 포스트
유명한 C# 함수형 라이브러리인 CSharpFunctionalExtensions 를 많이 참고해서 만들어서 사용법이 거의 비슷합니다.
특징
- GC pressure를 줄이기 위해서 Zero-Memory Allocation으로 구현했습니다.
- Unity에서 de-facto 인더스트리 스탠다드인 UniTask를 완전히 지원합니다.
- Unity6부터 도입된 Awaitable을 완벽 지원합니다.
벤치마크 자료
간단한 사용 예시
public async UniTask<string> ComplexOperation()
{
return await Result.SuccessIf(CheckA(), 0, "CheckA failed!")
.Bind(_ => FetchDataAsync()) // => UniTask<Result<string>>
.Ensure(str => !string.IsNullOrEmpty(str), "Empty data!")
.Map(str => str.Length)
.Bind(FinalStepAsync)
.Match(
onSuccess: val => $"Final OK: {val}",
onFailure: err => $"Failure: {err}"
);
}