2014-09-22 1 views
0

내 D 응용 프로그램에 body이라는 클래스 필드를 갖고 싶습니다.D에서 'body'필드의 이름을 올바르게 지정하는 방법은 무엇입니까?

이 같이

:

class Posting 
{ 
    // ... 
    string heading, body, timestamp; 
} 

을하지만이 코드를 컴파일 할 때, 나는 오류 얻을 :

source/app.d(8): Error: no identifier for declarator string 
source/app.d(8): Error: Declaration expected, not 'body' 

일부 주위에 인터넷 검색을하는 body가 Dlang '키워드입니다 것으로 나타났다을. 하지만 다른 이름으로 바꾸면 해결 코드가 많이 생깁니다 (JSON을 yajl-d으로 파싱하려고합니다).

그럼, 질문은 : 내 필드에 body이라는 필드를 어떻게 가질 수 있습니까?

답변

6

이것은 D에서 가장 귀찮은 키워드 중 하나입니다. 왜냐하면 아주 쉽게 다른 변수가 될 수 있고 신체가 매우 일반적인 변수 이름이기 때문입니다.

하지만 대답은 클래스에 body라는 필드를 사용할 수 없다는 것입니다. Body 또는 body_ 또는 그 변형을 시도해 볼 수는 있지만 bodyclass이라는 변수보다 더 이상 수행 할 수 없습니다.

가장 좋은 해결책은 인코딩 또는 디코딩시 변수 이름 대신 사용자 정의 속성 (있는 경우)의 대체 이름을 사용하도록 yajl-d을 수정하는 것일 수 있습니다. 코드에 대한 사소한 수정 일 수도 있고, getFieldName에서 https://github.com/repeatedly/yajl-d/blob/master/src/yajl/common.d으로 변경해야합니다.

편집 : 나는이 포크에 코드를 작성했습니다 : https://github.com/adamdruppe/yajl-d readme는 지금 예제를 보여줍니다. 아래의 코드를 참조하십시오. https://github.com/repeatedly/yajl-d/pull/6

+0

그리고 PR이 업스트림으로 병합되었습니다. –