Dưới đây là những gì các documentation đã nói về tính chất vật lý (còn gọi là lĩnh vực ủng hộ):
Một lĩnh vực được coi là vật lý nếu nó là một trong hai
- biến
- thuộc tính có mã định danh truy cập đọc hoặc truy cập là
default
hoặc null
- một tài sản với
:isVar
metadata
Vì vậy, bạn có thể thiết lập một thuộc tính mà đầy đủ bao gồm các giá trị tính toán. Hãy suy nghĩ một thuộc tính chỉ đọc cho bạn diện tích hình chữ nhật như một hàm chiều rộng và chiều cao, hoặc nghĩ về một thuộc tính được hỗ trợ bởi một số thuộc tính khác và chỉ trả về/đặt chiều rộng và chiều cao trong một đơn vị khác. Hoặc có thể bạn chỉ muốn đặt tên cho các trường sao lưu của mình theo cách khác, ví dụ: m_width
và m_height
.
:isVar
là hữu ích trong các tình huống mà các quy tắc truy cập thuộc tính vv được trình bày ở trên sẽ cho phép trình biên dịch nghĩ rằng không có trường sao lưu cần thiết. Trong trường hợp đó, các mã sẽ thất bại (từ các tài liệu một lần nữa):
// This field cannot be accessed because it
// is not a real variable
public var x(get, set):Int;
function get_x() {
return x;
}
function set_x(x) {
return this.x = x;
}
Bằng cách thêm :isVar
bạn về cơ bản cho trình biên dịch mà bạn hoàn toàn muốn các lĩnh vực sao lưu. Các tùy chọn khác đối với trường hợp cụ thể của bạn sẽ được sử dụng default,default
, trong trường hợp trình biên dịch biết có một lĩnh vực sao lưu tự động theo yêu cầu và truy cập nên bị hạn chế theo các cấp độ truy cập của tài sản (public
hoặc private
):
public var propertyInt(default, default):Int;
trong trường hợp đó bạn cũng có thể sử dụng một biến trực tiếp, bởi vì ảnh hưởng thực là trong bản chất giống nhau:
public var propertyInt : Int;
Cảm ơn nhiều cho câu trả lời rất thỏa mãn. Tôi sẽ đưa nó vào sử dụng tốt. Im vẫn còn lúng túng lẫn lộn, tôi nhảy qua từ C# và im từ từ bắt đầu hiểu tất cả các tính năng haxe. Cảm ơn nhiều ! :) –
Tôi cũng khuyên bạn nên tra cứu ý nghĩa của 'riêng tư 'trong Haxe - nó khác so với C# :-) – JensG
Tôi nhận thấy rằng tính riêng tư có chức năng được bảo vệ. Tại sao vậy ? Hơi khó chịu một chút. Có một số lời giải thích hợp lý cho hành vi này? Ngoài ra tôi ghét thiếu chức năng vòng lặp 'for' cổ điển ... –