2013-07-29 32 views
7

Đối với lý do tương thích (đối tượng là serialized và xuất khẩu và phải phù hợp với tên bên ngoài) Tôi muốn có một tên trường là 'loại', ví dụ:Có thể sử dụng các từ dành riêng cho tên trường không?

TTBaseWebResponse = class 
private 
    type: String; 
    success: Integer;  
end; 

or 

TTBaseWebResponse = class 
private 
    ftype: String; 
    fsuccess: Integer;  
public 
    type: string read fstring write fstring; 
    success: integer read fsuccess write fsuccess; 
end; 

Delphi (XE2) thậm chí sẽ không biên dịch này. Điều này có thể thực hiện được không? Làm sao?

+4

Chỉ khi bạn [ 'sử dụng & char trước name' của nó ] (http://stackoverflow.com/a/6063439/960757) ... – TLama

Trả lời

6

Hãy thử sử dụng & trước tên trường

+2

Sự kỳ diệu của điều này là RTTI dường như biết lĩnh vực này là 'loại' (không có dấu và) 'tất cả các con đường xuống'. Tôi đang sử dụng SuperObjects 'TSuperRttiContext để tuần tự hóa đối tượng và đầu ra JSON là: {"success": 1, "type": "TTBaseWebResponse"} không có dấu và - giống như tôi muốn. –

+4

Đó là vì tên của nó * là * 'loại' không có dấu và. Ký hiệu chỉ đơn giản là ký tự thoát cho trình phân tích cú pháp. Khi không phân tích cú pháp, bạn không cần phải thoát khỏi bất kỳ thứ gì. Khi tham chiếu trường ở nơi khác trong mã của bạn, bạn có thể tránh dấu và bằng cách đủ điều kiện tên. Ví dụ: 'Response.type'. –

5

Vâng, bạn phải sử dụng & trước tên;

TTBaseWebResponse = class 
private 
    &type: String; 
    success: Integer;  
end; 
5

này được bao phủ bởi các documentation:

định danh Extended

Bạn có thể gặp phải định danh (ví dụ như các loại, hoặc các phương pháp trong một lớp học) có tên giống như một Delphi từ dành riêng cho ngôn ngữ. Ví dụ: một lớp học có thể có phương thức được gọi là begin. Các từ được dành riêng cho Delphi chẳng hạn như là bắt đầu không thể được sử dụng cho tên nhận dạng.

Nếu bạn đủ điều kiện nhận dạng, thì không có vấn đề gì. Đối với Ví dụ, nếu bạn muốn sử dụng Delphi từ dành riêng loại cho một tên số nhận dạng, bạn phải sử dụng tên đầy đủ của nó:

var TMyType.type 
// Using a fully qualified name avoids ambiguity with Delphi language keyword. 

Là một thay thế ngắn hơn, các dấu và (&) điều hành có thể được sử dụng để giải quyết sự mơ hồ giữa các số nhận dạng và ngôn ngữ Delphi các từ dành riêng. & ngăn không cho từ khóa được phân tích cú pháp dưới dạng từ khóa (nghĩa là một từ dành riêng). Nếu bạn gặp phải một phương thức hoặc loại có cùng tên với từ khóa Delphi, bạn có thể bỏ qua không gian tên đặc điểm kỹ thuật nếu bạn đặt tiền tố tên nhận dạng bằng dấu và. Nhưng khi bạn đang tuyên bố một định danh có tên giống như một từ khóa , bạn phải sử dụng &:

type 
    &Type = Integer; 
    // Prefix with '&' is ok. 
+0

Dường như điều này không thể được sử dụng trong Delphi 7? – SOUser

Các vấn đề liên quan