2013-10-21 2 views
0

Vala가 자체 호출을 지원하는 방법이 있습니까? 수업이나 방법 중 하나를 사용합니까?Vala는 자체 호출을 지원합니까?

자바 스크립트는 다음과 같이 자체 호출을 지원합니다. 나는 무엇을 찾고 있습니다.

(function(){ 
    // some code… 
    })(); 

클래스를 동적으로로드하기 위해 해시 맵에로드하려고합니다.

+0

발라 대표와 클로저를 가지고있다. 익명 함수를 대리자에 저장하고 나중에 해당 대리자를 호출 할 수 있습니다. 대리자를 해시 맵에 저장할 수 있습니다. 그게 도움이 되니? '동적 로딩 '이란 정확히 무엇을 의미합니까? –

+0

동적로드는 나중에 이벤트 이름으로 호출하기 위해 해시 테이블에 저장하는 것을 의미합니다. 필자는 본질적으로 자동으로 호출되지 않고 해시 테이블에 자신을 추가하는 클래스를 찾고 있습니다. –

답변

0
using Gee; 

[CCode (has_target = false)] 
delegate void MyDelegate(); 

int main() { 
     var map = new HashMap<string, MyDelegate>(); 

     map["one"] =() => { stdout.printf("1\n"); }; 
     map["two"] =() => { stdout.printf("2\n"); }; 

     MyDelegate d = map["two"]; 
     d(); 
     return 0; 
} 

당신이 래퍼를 작성해야 대리인의 대상이 필요하면,이 질문을 참조하십시오 당신이 볼 수 있듯이 Gee HashMap containing methods as values

, 당신은 자기 invokation 필요하지 않습니다를. 자체 호출은 다음과 같습니다.

int main() { 
     (() => { stdout.printf("Hello world!\n"); })(); 
     return 0; 
} 

이것은 Vala에서 지원하지 않습니다 (valac-0.22로 테스트 함). 위임 VAR을 호출

예상대로 작동합니다

delegate void MyDelegate(); 

int main() { 
     MyDelegate d =() => { stdout.printf("Hello world!\n"); }; 
     d(); 
     return 0; 
} 
관련 문제