import std.stdio;
import std.string;
auto file = File(path, "r");
foreach (line; file.byLine) {
string[] parts = split(line);
이 함께 컴파일에 실패 :
Error: cannot implicitly convert expression (split(line)) of type char[][] to string[]
이 작동을 :
auto file = File(path, "r");
foreach (line; file.byLine) {
char[][] parts = split(line);
그러나 char[][]
을 사용해야하는 이유는 무엇입니까? 지금까지 설명서를 이해하는 한 split
이 string[]
을 반환한다고 말합니다.
이 솔루션을 사용하여 성능에 영향이 있습니까? – clstaudt
'idup'은 배열의 불변 복제를 만듭니다. 따라서 이것이 중요하다면, 필요하다면 항상 불변으로 변환 할 수 있습니다. 예 : std.algorithm의'map'으로'foreach (line; file.byLine.map! "cast (string) a")'를 호출합니다. 그러나 일반적으로 불변 캐스트에주의하십시오. –
당신이하고있는 일을 정말로 알지 못한다면, 당신은 불변의 것을 버려서는 안됩니다. 그렇게하면 형식 시스템이 파괴되어 예기치 않은 동작이 발생할 수 있습니다. 이 예제에서 루프 반복을 통해 문자열을 저장하면 'byLine'이 사용한 것과 동일한 임시 버퍼를 계속 가리킬 것이기 때문에 문자열을 "값을 변경"할 수 있습니다. –