3
다음 선언 :상수 문자열 [char] AA를 선언하는 구문은 무엇입니까?
const(string[char]) AA1 = [
'a' : "fkclopel",
'b' : "poehfftw"
];
void main(string args[]){}
저를 제공합니다
C:...\temp_0186F968.d(1,27): Error: non-constant expression ['a':"fkclopel", 'b':"poehfftw"]
는 다른 유형의 종류와 일하는 것이있다.
이유는 현재 구현 (여러 가지면에서 차선책)에서 연관 배열 레이아웃과 기타 세부 사항이 컴파일러에 완전히 불투명하기 때문입니다. AA 리터럴은 실제로 데이터를 구성하는 런타임 함수 (파일 src/druntime/src/rt/aaA.d, 함수 _d_assocarrayliteralTX)를 호출합니다. 이 함수는 나중에 컴파일 할 때 존재하지 않을 수도 있으며 나중에 바이너리 라이브러리에서 링크됩니다. 정적 데이터는 알려진 레이아웃을 필요로하기 때문에 컴파일러가 실행 파일의 데이터 세그먼트에 넣을 수 있으며이 함수는 블랙 박스이므로 사용할 수 없습니다. –
연관 배열에 대한 견고한 라이브러리 구현이 있으면이 제한은 결국 사라질 것입니다. 현재이 효과에 대한 작업이 진행 중이며 완료 될 것으로 보입니다. – Meta