Class Specifiers and when to use them
Giới Thiệu
Đọc Hướng dẫn này giả định bạn biết những điều cơ bản về lập trình Pawn, Trong đó bao gồm (nhưng không giới hạn):
- phạm vi (không, không zoom vào một vũ khí)
- cú pháp chung
- các biến và Hàm
Cần giúp đỡ hiểu một số trong những?
Xin vui lòng đọc một số hướng dẫn dưới "Pawn Lập trình" phần trong bài viết này:
New vs. Static
Spoiler
Chúng không cần thiết cho việc sử dụng hàm.
New
- Tạo ra một biến mới trong bộ nhớ mỗi khi nó được khai báo
- Mỗi khai báo, việc khởi tạo được thiết lập
- Vào cuối phạm vi của biến này, nó sẽ bị xóa khỏi bộ nhớ và không thể truy cập
Ví Dụ Mới:
Code:
new i; // Created in memory, initialized to 0 // Just to create a deeper scope if(i == 0) { // Created in memory, initialized to 5 new j = 5; } // Outside of that scope, so j is deleted from memory
Static
- Tạo ra một biến trong bộ nhớ lần đầu tiên nó được khai báo
- Việc kê khai đầu tiên đặt khởi tạo
- Mỗi khai báo tiếp theo, biến sẽ tổ chức bất cứ điều gì giá trị cuối cùng của nó là
- Vào cuối phạm vi của biến này, nó không bị xóa khỏi bộ nhớ, nhưng vẫn không thể truy cập
- Hãy suy nghĩ về static như một biến toàn cầu, ngoại trừ nó chỉ có thể truy cập trong phạm vi khai báo
Ví dụ Static:
Code:
get_var() { // Create a variable in memory once, initialized to 0 first time static var; // Add 5 to variable var += 5; // Return variable return var; } some_function() { // Create a new variable in memory and assign to get_var() new var = get_var(); // var = 5 (0 + 5) = 5 // After that call to get_var(), the static variable inside get_var() // will still equal 5 for the next time it is used var = get_var(); // Now var = 10, because (5 + 5) = 10 // This is because the static variable did not reset to 0. // The static variable kept its old value that we last set }
Stocks
Spoiler
Nếu nó tìm thấy bất kỳ, sau đó nó đưa ra một cảnh báo cho bạn.
Stocks được sử dụng cho các biến và hàm mà không cần phải được sử dụng trong các plugin.
Nếu một biến hay hàm được khai báo là Stocks, sau đó trình biên dịch không quan tâm nếu nó được sử dụng hay không.
Stocks chỉ nên được sử dụng trong bao gồm các tập tin bởi vì bạn sẽ không nhất thiết phải sử dụng tất cả mọi thứ từ khi bạn đã khai báo nó.
Trong mã plugin của riêng bạn, bạn không nên tuyên bố bất cứ điều gì như stock bởi vì bạn chỉ cần phải có mã đang được sử dụng.
Ví Dụ:
Code:
stock my_global; stock my_function() { return 1; }
Nếu bạn khai báo chúng nhưng không sử dụng đến nó thì nó sẽ được coi như không tồn tại
Constants - Hằng
Spoiler
Hằng về cơ bàn là các biến nhưng không bao giờ thay đổi giá trị
Họ có một tên được chỉ định như các biến, được khai báo và khởi tạo, và mất không gian trong bộ nhớ.
Hằng phải được gán một giá trị khi khai báo.
Ví dụ:
Code:
// Creates a constant variable with a value const PI = 3.14; // Throws an error because constants cannot change PI = 0.0; // Throws an error because it isn't assigned to a value const INVALID; // Creates a constant array // Array constants must be prefixed with: new, static, or stock new const ARRAY[] = {1, 2, 3}; some_function() { // Create the constant one time in memory static const MAX_USES = 3; // Create a variable on time in memory, defaults to 0 static uses; // Check if increased too many times if(uses >= MAX_USES) return; // Increase for next usage uses++; }
Private vs. Public
Spoiler
Biến và hàm chỉ có thể được khai báo công khai trong phạm vi Global.
Khi khai báo một biến là Public sẽ cho phép nó có thể truy cập đến các plugin khác sử dụng XVars.
Điều này có thể hữu ích cho việc chia sẻ các biến trong các plugin.
Nói chung, biến Public không được sử dụng, và natives năng động được tạo ra để có được / thiết lập chúng.
Thực hiện một hàm nào sẽ để cho nó có thể truy cập đến các module và các plugin khác.
Điều này có thể hữu ích cho:
- Hooking sự kiện, chuyển tiếp, trình đơn phím bấm, lệnh
- Nhiệm vụ xử lý
- Xử lý chuyển tiếp tùy chỉnh
- Chức năng gọi từ plugin khác sử dụng callfuncs (hướng dẫn đến sớm)
ví dụ:
Code:
// Create a public variable public my_public_global_variable = 1; // Create a private variable new my_private_global_variable = 2; // Create a public function public my_public_function() { } // Create a private function my_private_function() { }
Trong hàm Public , danh sách tham số không thể có giá trị mặc định.
Ví Dụ:
Code:
// Valid header of what is allowed public valid_header(variable1, const variable2, bool:boolean3, myArray[], &someByReference, ...) { // Even dynamic parameter list is allowed } // Invalid function header public invalid_header(var = 0) { // Cannot have default values }
Kết hợp chúng, hầu hết các bạn sẽ cần phải làm là:
- new const
- static const
- public const
- stock const
- stock static const
- stock public const
Có rất nhiều sự kết hợp bạn có thể làm, nhưng đó là tất cả những gì có thể thậm chí gần cần thiết.
0 nhận xét:
Post a Comment