C# 에 Expression 이란 클래스가 있는지 몰랐는데
코드를 데이터로 담는 구조라고 한다.
일반 람다, 그러니까 Func<Int, Int> 같은 것들이
코드를 코드로 사용하기 위해 만들어진 클래스라면 그 반대의 역할을 한다고..
저 Expression 클래스 때문에 일반 익명함수에서 var 를 대신 사용하는 타입 추론이 불가능하다고 한다.
Trade-off 라고 하는데 좋은건지 나쁜건진 잘 모르겠다. 내가 C# 을 안쓰니까..
다만 코드를 데이터와 코드 두 가지 형태로 표현할 수 있기 때문에 Lisp 의 매크로가 그러하듯이
메타 프로그래밍이 가능해지고, 실제 Expression 인스턴스에서 . 을 타이핑 해서 자동완성 되는걸 보면
코드를 조작하기 위한 다양한 함수들이 지원되는걸 볼 수 있다.
.을 타이핑해서 자동완성 되면 코드 조작을 하기 휘한 다양한 함수가 지원되는거라고 누가 그럽디까?
고정하시고 이 인도인 영상을 보세요.
http://www.youtube.com/watch?v=f-9SwocMAns
http://gall.dcinside.com/board/view/?id=programming&no=410057
http://gall.dcinside.com/board/view/?id=programming&no=410057
http://gall.dcinside.com/board/view/?id=programming&no=410057