안녕하세요. 오늘 닷넷10관련해서 이것저것 보다보니 이런 혼종도 만들 수 있구나하면서 한번 공유드립니다.
해외 Reddit에서도 얘기가 나오는중인것 같습니다.
우선 기존 닷넷9에서의 사용법을 보여드리겠습니다.
public static class PipeExtensions
{
public static TResult Pipe<T, TResult>(this T value, Func<T, TResult> func) => func(value);
}
// Program.cs
var number = args[0]
.Pipe(int.Parse);
Console.WriteLine(number);
자주 쓰는 확장메소드라면 이런식으로 많이 분리해서 사용하기도 하죠.
근데 이게 닷넷 10에 오면서
public static class PipeOperator
{
extension<T, TResult>(T)
{
public static TResult Pipe(T source, Func<T, TResult> func)
=> func(source);
}
}
위와 같이 깔끔하게 쓰는 수준을 넘어서, operator (연산자 오버로딩) 라는 키워드가 섞일 수 있게되면서
public static class PipeOperator
{
extension<T, TResult>(T)
{
public static TResult operator | (T source, Func<T, TResult> func)
=> func(source);
}
}
// Program.cs
var number2 = args[0] | int.Parse;
var number3 = args[0] | int.Parse | (x => x * 2);
Console.WriteLine(number2);
ㅋㅋ..
영상 공유드리면서 마치겠습니다
나름, 운영레벨에서는 비추했습니다.
여러분들도 아 이렇게도 쓸 수 있구나~ 하고 넘겨주시면 될 것 같습니다!