저는 D 프로그래밍 언어를 처음 사용하기 시작했습니다. D 프로그래밍 언어 책을 읽기 시작했습니다.연관 배열에 문자열 키를 저장할 수없는 이유는 무엇입니까?
./vocab.d(11): Error: associative arrays can only be assigned values with immutable keys, not char[]
내가 DMD는 2.051
나는 추측했다 컴파일 사용하고 있습니다 : 하나의 연관 배열 예제 코드를 시도 할 때
내가 오류로 실행
#!/usr/bin/rdmd
import std.stdio, std.string;
void main() {
uint[string] dict;
foreach (line; stdin.byLine()) {
foreach (word; splitter(strip(line))) {
if (word in dict) continue;
auto newId = dict.length;
dict[word] = newId;
writeln(newId, '\t', word);
}
}
}
DMD이 오류 메시지가 표시 연관 배열에 대한 규칙은 TDPL 북 이후 변경되었습니다.
문자열 배열 키를 사용하여 연관 배열을 어떻게 사용해야합니까?
감사합니다.
업데이트 :
나는이 책의 뒷부분에서 해결책을 찾았습니다.
string.idup을 사용하여 배열에 넣기 전에 중복 불변 값을 만듭니다.
그렇게dict[word.idup] = newId;
일을 할 것입니다.
하지만 효율적인가요?
이 질문에 몇 달 또는 몇 년 후 오는 사람을위한 참고 사항 - 인쇄 된 예제에는 다른 잘못된 것이 있습니다. 연관 배열 유형에 대해 ulong이 아닌 uint를 사용하고 std.array를 가져 와서 스플리터를 가져와야합니다. http://www.digitalmars.com/d/archives/digitalmars/D/learn/problems_with_DPL_example._30009.html – DarenW