d의 정적 템플릿, 시작 시 초기화
6490 단어 필기
Regex!char staticRe(string reStr)()
{
static struct Impl
{
static Regex!char re;
static this()
{
re = regex(reStr);
}
}
return Impl.re;
}
auto myFunc(string input) {
...
auto result = input.replaceAll(staticRe!"foo(\w+)bar", `blah $1 bleh`);
...
}
를 가진 템플릿 함수로 실행할 때 전역 초기화 정규를 되돌려 템플릿으로 실례화합니다.ct
컴파일링이 없을 때 비용을 지불하지 않아도 됩니다. 프로그램이 시작될 때 실례화됩니다.등가
.그러나 우리는
에서 템플릿 함수 중 하나를 사용할 수 없다
.컴파일을 피할 때 생성
.전역 변수처럼 정적 필드입니다.가동 실례화를 보장하기 위해서. this ()
로 main
전에 운행합니다. class Language { ... }
Language curLang = ...;
version(extractStrings) {
private int[string] translatableStrings;
string[] getTranslatableStrings() {
return translatableStrings.keys;
}
}
string gettext(string str)() {
version(extractStrings) {
static struct StrInjector {
static this() {
translatableStrings[str]++;
}
}
}
return curLang.translate(str);
}
...
auto myFunc() {
...
writeln(gettext!"Some translatable message");
...
}
d버전
gettext
입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
static 간단한 설명static 방법은 일반적으로 정적 방법이라고 부른다. 정적 방법은 어떠한 대상에 의존하지 않고 접근할 수 있기 때문에 정적 방법에 있어this는 없다. 왜냐하면 그 어떠한 대상에도 의존하지 않기 때문이다. 대상이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.