0
Vala가 자체 호출을 지원하는 방법이 있습니까? 수업이나 방법 중 하나를 사용합니까?Vala는 자체 호출을 지원합니까?
자바 스크립트는 다음과 같이 자체 호출을 지원합니다. 나는 무엇을 찾고 있습니다.
(function(){
// some code…
})();
클래스를 동적으로로드하기 위해 해시 맵에로드하려고합니다.
Vala가 자체 호출을 지원하는 방법이 있습니까? 수업이나 방법 중 하나를 사용합니까?Vala는 자체 호출을 지원합니까?
자바 스크립트는 다음과 같이 자체 호출을 지원합니다. 나는 무엇을 찾고 있습니다.
(function(){
// some code…
})();
클래스를 동적으로로드하기 위해 해시 맵에로드하려고합니다.
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;
}
발라 대표와 클로저를 가지고있다. 익명 함수를 대리자에 저장하고 나중에 해당 대리자를 호출 할 수 있습니다. 대리자를 해시 맵에 저장할 수 있습니다. 그게 도움이 되니? '동적 로딩 '이란 정확히 무엇을 의미합니까? –
동적로드는 나중에 이벤트 이름으로 호출하기 위해 해시 테이블에 저장하는 것을 의미합니다. 필자는 본질적으로 자동으로 호출되지 않고 해시 테이블에 자신을 추가하는 클래스를 찾고 있습니다. –