Saturday, May 31, 2014

Class Specifiers (new static stock public const) - Các lớp Đặt Tả Và Trường Hợp Sử Dụng Nó


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 

Bạn chỉ nên sử dụng các cho các biến.
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 

Khi biên dịch các plugin của bạn, trình biên dịch kiểm tra bất kỳ biến và các hàm không sử dụng.
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ớ.

Tuy nhiên, các hằng số không bao giờ gán được giá trị mới.
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 

Theo mặc định, tất cả các biến và các hàm là private.
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. 
__________________
Không làm việc riêng hoặc bán mods.

0 nhận xét:

Post a Comment