, 우리는 그래서 당신이 뭔가를 쓸 수 ... 중괄호 모든 표현을 실행하고, 마지막 값을 반환의 기본 동작을했다 컴파일러를 썼다 C#에서 뭔가 상응 하는가? 예를 들어, 부작용이있는 람다 함수를 작성하려고합니다. 람다 부작용 (단지 예)이 기능이있는 경우, 더 ... 혀짤배기에서 예를 들어, 당신이 prognC는 다시 학교에 # 범위 지정 연산자
6
A
답변
7
되어야한다, 블라드의 대답은 정확하고 당신은 람다 함수를 선언 할 필요가 없습니다 대의원. 컴파일러는 구문 람다식이 대리자 (예 Func<int>
) 또는 식 트리 (예 Expression<Func<int>>
)로 컴파일하며되어야하는지 결정할 수 없기 때문에 제외
int foo = new Func<int>(() => {
Console.WriteLine("bar"); return 1; })();
: 그래서, 당신은 대리인을 작성해야
static Func<R> Scope<R>(Func<R> f) { return f; }
// Compiler automatically compiles lambda function
// as delegate and infers the type arguments of 'Scope'
int foo = Scope(() => { Console.WriteLine("bar"); return 1; })();
나는 이것이 사용되어서는 안되는 못생긴 트릭 인 것에 동의한다. :-)하지만 재미있는 사실이다.
7
이의 부작용을 가지고에서 당신을 중지 거기에 아무것도에 대한 인
점 이하
람다 식.Func<int> expr =() =>
{
Console.WriteLine("bar");
return 1;
};
int foo = expr();
2
당신은 익명의 기능에 대해 이야기하고 있습니다. http://msdn.microsoft.com/en-us/library/bb882516.aspx, 제 생각에는.
5
int foo = (() => { printf("bar"); return 1; })();
편집 : 건설적인 비판을 주셔서 감사합니다, 그것은 원칙적으로
int i = ((Func<int>)(() => { printf("bar"); return 1; }))();
3
우리는 람다 정의에 대해 ()=>{M();}
보다 더 간단한 구문을 사용하는 것을 고려해 보았지만 블록을 쉽게 읽을 수 있고 쉽게 혼동하지 않는 구문을 실제로 찾지도 못했습니다. 또는 배열 이니셜 라이저. 당신은 지금 람다 구문을 고수하고있다.
관련 문제
- 1. 범위가없는 범위 해결 연산자
- 2. SQL 범위 연산자
- 3. C는 아니지만 C는 질문입니다.
- 4. 프로그래밍 방식으로 지정 연산자
- 5. Python에서 사용자 지정 연산자 상속?
- 6. Clojure의 동적 범위 지정?
- 7. C는
- 8. C는 ++ :
- 9. 계정 범위 지정 구현
- 10. MySQL의 범위 지정 문제는
- 11. JavaScript 함수 수준 범위 지정
- 12. CoffeeScript/JavaScript의 변수 범위 지정
- 13. 템플릿 지정 연산자 : 유효한 C++?
- 14. PHP : 범위 결정 연산자 비 정적 방법
- 15. C++ 이진 범위 분석 연산자 및 클래스
- 16. 왜 C++ 범위 분석 연산자 ::가 있습니까?
- 17. Javascript 상속 범위 지정 질문
- 18. C는 매개 변수
- 19. UISearchBar의 범위 막대 다시 만들기
- 20. Excel VBA - 범위 다시 초기화
- 21. 어디서 영국 학교에 오래 갈 수 있을까요?
- 22. 자바 클로저 범위 지정 문제
- 23. jQuery javascript 범위 지정 문제
- 24. CSS의 네임 스페이스/범위 지정
- 25. Socket.IO 범위 지정 문제 (Node.JS)
- 26. Javascript 콜백의 범위 지정 문제
- 27. Seam 2 - 사용자 지정 범위
- 28. 구조체 맵 2.6.2 범위 지정
- 29. JavaScript의 어휘 적 범위 지정
- 30. 내장 Groovy 스크립트 범위 지정
이것이 올바른 대답입니다. 즉, 심각하게 고려하지 않는 것이 좋습니다. –
투표를하기 전에 코드가 컴파일되는지 실제로 확인하고 싶을 수도 있습니다. 그렇지 않습니다. -1. – Aaronaught
네, 그렇습니다. printf는 C#에 존재하지 않습니다. 그러나 대답은 그것에 관한 것이 아닙니다. – Vlad