sách gpt4 ăn đã đi

lua变量、数据类型、if判断条件和数据结构table以及【lua函数】

In lại Tác giả: Tôi là chú chim nhỏ Thời gian cập nhật: 2023-04-19 06:31:09 27 4
mua khóa gpt4 giày nike


1. Biến Lua [biến toàn cục, biến cục bộ và các trường trong bảng]

Có ba loại biến Lua: biến toàn cục và biến cục bộ và các trường trong bảng.

▪ Biến toàn cục: Theo mặc định, tất cả các biến trong Lua đều là biến toàn cục.

▪ Biến cục bộ: Các biến được khai báo rõ ràng trong hàm sử dụng tham số cục bộ cũng như hàm đều là biến cục bộ. Ngay cả khi bạn sử dụng cục bộ để khai báo nó bên ngoài một hàm, phạm vi của nó là toàn bộ tệp hiện tại, tương đương với một biến toàn cục.

▪ Các trường trong bảng: Giá trị mặc định của biến là 0.

☺ Ngôn ngữ Lua không phân biệt giữa biến chưa được khởi tạo và biến được gán bằng 0, vì vậy biến toàn cục có thể được sử dụng mà không cần khai báo.


1. Biến toàn cục

Biến toàn cục không cần phải khai báo. Bạn chỉ cần gán giá trị cho biến toàn cục để tạo nó.

                        
                          b=10 -- Đây b là biến toàn cục print(b)

                        
                      
  • Thông thường không cần phải xóa biến toàn cục. Nếu một biến có thời gian tồn tại ngắn, chỉ cần sử dụng biến cục bộ. Tuy nhiên, nếu bạn thực sự muốn xóa biến toàn cục, chỉ cần gán nó bằng 0.
                        
                          b=nil -- biến toàn cục b bị xóa print(b)

                        
                      

2. Khai báo biến cục bộ - sử dụng biến cục bộ

  • Tất cả các biến trong Lua đều là biến toàn cục, ngay cả trong khối câu lệnh hoặc hàm, trừ khi chúng được khai báo rõ ràng là biến cục bộ bằng cách sử dụng biến cục bộ.

  • Phạm vi của biến cục bộ là từ vị trí khai báo đến cuối khối câu lệnh.

■ Khuyến nghị: Trong Lua, nên sử dụng các biến cục bộ càng nhiều càng tốt. Lợi ích:

  1. Tránh xung đột đặt tên
  2. Truy cập các biến cục bộ nhanh hơn các biến toàn cục

3. Tên miền trong bảng lua

                        
                          a = {} a[10] = 1 đối với i=1,15,1 thực hiện in(a[i]) kết thúc

                        
                      
  • kết quả:


2. Kiểu dữ liệu Lua, nếu xét điều kiện

Lua là ngôn ngữ được gõ động. Các biến không cần phải gõ, chỉ cần gán giá trị cho các biến. Các giá trị có thể được lưu trữ trong các biến, được truyền dưới dạng đối số hoặc được trả về dưới dạng kết quả.

1. Có 8 loại cơ bản trong Lua: nil, boolean, number, string, userdata, function, thread và table.

kiểu dữ liệu mô tả
không giá trị rỗng, Chỉ có giá trị nil thuộc về lớp này và đại diện cho một Giá trị không hợp lệ Tương đương với sai trong biểu thức có điều kiện )。
Boolean kiểu Boolean
con số Kiểu số , tương đương với double trong ngôn ngữ C
sợi dây kiểu chuỗi , Phụ thuộc vào Một cặp dấu ngoặc kép hoặc dấu ngoặc đơn để bày tỏ
chức năng loại chức năng , một hàm được viết bằng C hoặc Lua
bàn Một bảng trong Lua thực chất là một "mảng kết hợp" và chỉ mục của mảng có thể là số, chuỗi hoặc loại bảng. Trong Lua, các chữ trong bảng được biểu thị bằng {}. {} có nghĩa là tạo một bảng trống.
chủ đề Loại luồng, đại diện cho một dòng thực thi độc lập, được sử dụng để thực thi các coroutine
dữ liệu người dùng Đại diện cho bất kỳ cấu trúc dữ liệu C nào được lưu trữ trong một biến

2. loại (tên biến)

  • Chức năng: Lấy kiểu của biến

3、 Điều kiện phán đoán if của Lua được hiểu là nó có hợp lệ hay không

▷Khi nào lỗi [không hợp lệ] sẽ không thành công---khi nó bằng 0 và sai

  • nil đại diện cho giá trị trống hoặc giá trị không hợp lệ

▷Các trường hợp khác là số, chuỗi, true, bảng (ngay cả bảng trống cũng đúng) và các điều kiện phán đoán đều [hợp lệ] đúng và thành công!



3. Bảng cấu trúc dữ liệu Lua

0 Bảng chữ: {} , bảng trống đã tạo, giá trị mặc định của trường nội bộ là không.

  • Bảng được xây dựng bằng dấu ngoặc nhọn {} và có thể là {{}} nhiều chiều.

1、 Bảng trong Lua thực chất là một "mảng kết hợp". Mảng kết hợp là một mảng có chỉ mục đặc biệt. Chỉ mục của mảng có thể là một mảng, một chuỗi, một bảng, v.v. [ngoại trừ con số không].

  • Các phần tử trong bảng ở dạng cặp khóa-giá trị. key là chỉ mục của mảng. Chìa khóa của bảng là duy nhất. Bảng có thể có tên khóa tùy chỉnh.

2. Bảng không có kích thước cố định và có thể thêm bất kỳ số phần tử nào vào mảng.

3、 Bảng là cơ chế cấu trúc dữ liệu chính trong Lua và là cấu trúc dữ liệu duy nhất. Nó có thể được sử dụng để triển khai mảng, bảng băm, bộ, từ điển, v.v. Các đối tượng, gói và mô-đun cũng có thể được biểu diễn thông qua các bảng.

Trên thực tế, khái niệm bảng trong Lua tương đương với khái niệm đối tượng trong Java. Mọi thứ đều là một đối tượng.

4. Có hai cách để xóa các phần tử trong bảng: đặt trực tiếp thành nil hoặc xóa bằng cách gọi phương thức Remove.

  • Sự khác biệt giữa hai phương pháp xóa: gán trực tiếp phần tử cho nil sẽ để lại khoảng trống và không ảnh hưởng đến các phần tử khác. Sử dụng chức năng xóa để xóa sẽ di chuyển các phần tử sau về phía trước và điền chúng vào.

5. Có thể lấy được bao nhiêu phần tử trong bảng bằng cách sử dụng #

6. Chỉ số trong bảng bắt đầu từ 1

                        
                          tb={'cơm khô', 'ăn', 'chỉ cơm'}

                        
                      
  • Trên thực tế, tb như sau:
                        
                          -- Tình huống của tb như sau: -- Bảng địa chỉ(c917ad2) { [1] = 'Gạo khô', [2] = 'Ăn', [3] = 'Chafang', }

                        
                      

7. Khi bảng có phím tùy chỉnh:

                        
                          --Chỉ có giá trị giá trị được ghi vào bảng dưới dạng phần tử tb={'dry Rice', 'eating', 'chafen', s='walk'}

                        
                      
  • Trên thực tế, bảng có khóa phân bổ mặc định bắt đầu từ số 1. Việc phân bổ trong bảng tb như sau:
                        
                          -- Tình huống của tb như sau: -- Bảng địa chỉ(c917ad3) { [1] = 'gạo khô', [2] = 'ăn', [3] = 'chafany', ['s'] = ' walk', --Chi tiết: s sẽ được trích dẫn }

                        
                      

Chi tiết: Để lấy giá trị thông qua khóa s tùy chỉnh, s phải được đặt trong dấu ngoặc kép.


Có một cú pháp đường cho các phím tùy chỉnh, dấu ngoặc vuông có thể được thay thế bằng dấu chấm.


Thứ tự thực hiện của các phím được gán mặc định và các phím tùy chỉnh trong bảng là: mặc định được thực hiện trước, sau đó là các phím tùy chỉnh.

                        
                          -- Chỉ có giá trị giá trị được ghi vào bảng dưới dạng phần tử tb={'干rice', a='walk', b='hahaha', _='bạn có đói không', 'ăn', 'chỉ cơm thôi' }

                        
                      
  • Trên thực tế, cách phân bổ trong bảng tb như sau: khi chương trình gán các khóa, trước tiên nó sẽ bỏ qua các khóa tùy chỉnh rồi mới gán chúng.
                        
                          -- Tình huống của tb như sau: -- Bảng địa chỉ(c917ad3) { [1] = 'gạo khô', [2] = 'ăn', [3] = 'chafany', ['a'] = ' walk', ['b'] = 'Hahaha', ['_'] = 'Bạn có đói không', }

                        
                      
  • kết quả:

8. Các phương thức table.insert và table.remove cung cấp khả năng thêm và xóa các phần tử.

  • table.insert (tên bảng, khóa cần thêm, giá trị cần thêm) Thêm trực tiếp các phần tử vào vị trí cuối cùng: table.insert (tên bảng, giá trị cần thêm).

  • table.remove(tên bảng, khóa cần xóa).



4. Hàm Lua (không khớp về số lượng tham số hình thức và tham số thực tế, nhiều giá trị trả về, tham số có độ dài thay đổi, tham số ẩn dấu hai chấm và dấu chấm của phương thức)

0. Chương trình Lua thực thi mã nghiêm ngặt từ trên xuống dưới và phần khai báo hàm phải được viết trước lệnh gọi hàm.


Trong Lua, hàm là loại đầu tiên. Hàm có thể tồn tại trong các biến, cũng có thể được truyền cho các hàm khác thông qua tham số, cũng có thể được dùng làm giá trị trả về của các hàm khác và cũng có thể được dùng làm khóa trong bảng.

1. Cách xác định hàm

                        
                          -- Cách 1: tên hàm (danh sách tham số) kết thúc nội dung hàm -- Cách 2: tên hàm = hàm (danh sách tham số) kết thúc nội dung hàm

                        
                      

2. hàm lua

① Hàm có thể tồn tại dưới dạng biến 【 chức năng ẩn danh

                        
                          a = hàm(x, y) trả về x * y kết thúc b = a in(b(2,3))

                        
                      
  • kết quả:

    6 。

▪ Hàm hàm cũng có thể tồn tại trong bảng

                        
                          tab = { test=function() in("Xin chào thế giới!") kết thúc } tab.test()

                        
                      
  • kết quả:

Xin chào thế giới.

3. Số lượng tham số hình thức và tham số thực tế không khớp nhau

  • Số lượng tham số thực tế được truyền vào > số lượng tham số hình thức được xác định: nhiều tham số được truyền vào sẽ bị bỏ qua trực tiếp.
  • Số lượng tham số thực tế được truyền vào < số lượng tham số chính thức được xác định: đối với các tham số bị thiếu, hãy sử dụng nil để thay thế.

4. Nhiều giá trị trả về

  • Ví dụ 1:


  • Ví dụ 2:

  • Chi tiết nhỏ: Nhiều hàm có nhiều giá trị trả về được gọi liên tục [sử dụng, khoảng] Chỉ có hàm cuối cùng được mở rộng, tức là hàm cuối cùng đủ điều kiện trả về nhiều giá trị theo mặc định.


5. Tham số độ dài không xác định

  • Giống như Java, các tham số có độ dài thay đổi được biểu thị bằng... và đóng vai trò là tham số cuối cùng của hàm.
  • sử dụng lựa chọn Chức năng truy cập các tham số có độ dài thay đổi
    • select('#', …) trả về độ dài của đối số biến.
    • select(n, …) được sử dụng để quay về từ điểm bắt đầu N Danh sách tất cả các tham số từ vị trí đầu đến cuối.


6. Tham số ẩn dấu hai chấm và dấu chấm của phương thức

▷ Cú pháp của Lua khi định nghĩa hoặc gọi phương thức - dấu hai chấm, biểu thị tham số self

Cú pháp này sử dụng dấu hai chấm để thể hiện bản thân, tương đương với điều này trong Java.

■ Ví dụ 1:

                        
                          --Xác định Tài khoản = { số dư = 0 } --Phương thức rút tiền có hai tham số, một tham số self [tương đương với tham số này trong java] là hàm Tài khoản trỏ đến bảng hiện tại Account.withdraw(self, v) self.balance = self . Balance - v end --Cách viết tương đương: function Account:withdraw(v) --Dấu hai chấm cho biết tham số đầu tiên là self self.balance = self.balance - v end --Call Account.withdraw(self, 100) --Tài khoản ghi tương đương:rút(100)        

                        
                      

■ Ví dụ 2:

                        
                          -- Khi giá trị của cặp khóa-giá trị của bảng là một hàm, tham số của phương thức là self và tham số self cũng được truyền cho một phương thức khác của phần thân phương thức hàm -- {} đại diện cho bảng tbWnd.tbOnClick trong Lua = { btnOk = function(self) self:onClickOK() -- tương đương với onClickOK(self) end, }

                        
                      

7. Các hàm được lồng và được gọi, và hàm dưới dạng tham số cần phải có các tham số được truyền vào.

① Bằng cách lưu trữ các tham số trong bảng và bảng được liên kết với hàm, hàm có thể lấy tham số thông qua self.key

② Sau đó là hàm ngoài (func, table)

                        
                          local tbTable = {} tbTable.key1 = 1 function tbTable:func1()--được viết như thế này, tham số ngầm định là self print(self.key1) end--hàm gọi hàm lồng nhau func2(func,tbSelf) func(tbself) kết thúc -- thực thi func(tbTable.func1)

                        
                      



☺ 5. Các cách viết hàm lua thông dụng

1. Xây dựng trực tiếp

                        
                          function func(...) print(...) end -- gọi hàm func(123)

                        
                      

2. Xây dựng bảng, chức năng lưu trữ khóa (1)

                        
                          local tbTable = {} function tbTable.func1(...) print(...) end function tbTable.func2(...) print(...) end -- gọi hàm tbTable.func1(123) tbTable.func1 (4,5,6)

                        
                      

3. Xây dựng bảng, chức năng lưu trữ khóa (2)

                        
                          local tbTable = {} tbTable.func1 = function(...) print(...) end tbTable.func2 = function(...) print(...) end -- gọi hàm tbTable.func1(123) tbTable .func1(4,5,6)

                        
                      

4. Xây dựng bảng, chức năng lưu trữ khóa (3)

                        
                          local tbTable = { func1 = function(...) print(...) end, func2 = function(...) print(...) end } -- Gọi hàm tbTable.func1(123) tbTable.func1( 4,5,6)

                        
                      



6. Hàm lồng nhau |

1. Đặc điểm địa phương:

Biến cục bộ: Các biến được khai báo rõ ràng trong một hàm sử dụng tham số cục bộ cũng như hàm đều là các biến cục bộ.

Ngay cả khi nó được khai báo bằng cách sử dụng cục bộ bên ngoài hàm, phạm vi của nó là toàn bộ tệp hiện tại, tương đương với một biến toàn cục.


2. Hàm lồng nhau |

(1) Tính năng: Lệnh gọi hàm được biểu thị bằng (). Có bao nhiêu lớp, cần bao nhiêu () để thực sự gọi hàm?

(2) Cho ví dụ:

  • Ví dụ 1:
                        
                          local f = function(n) return function(x) return x+n end end print(f(1)(2)) -- Hàm lồng nhau, mỗi cấp độ tương đương với () a = f(1) print( a( 10))

                        
                      
  • kết quả:

    3 11 。


  • Ví dụ 2: local tương đương với biến toàn cục của java bên ngoài hàm [độc lập Phạm vi Sự nhấn mạnh vào biến cục bộ bên ngoài hàm]
                        
                          local p = 1 local f = function() local v = 0 -- local tương đương với biến toàn cục của java bên ngoài hàm [bên dưới] return function() v = v + p print(v) end end a,b = f ( ), f() a(); b(); p = 2 a();

                        
                      
  • kết quả:

    1 。

    1 。

    3 。

    3 。

  • Local tương đương với biến toàn cục của Java [phạm vi độc lập] bên ngoài hàm.

                        
                          lớp A{ riêng tư int v; -- biến toàn cục public void add(){} }

                        
                      

  • Ví dụ 3:
                        
                          cục bộ f = hàm() trả về { thêm = hàm(a,b) trả về a + b kết thúc, phụ = hàm(a,b) trả về a - b kết thúc, } kết thúc v = f() in(v.add(1,2)) in(v.sub(2,1))

                        
                      
  • kết quả:

    3 1 。




Nếu bài viết này hữu ích với bạn thì hãy nhớ cho Yile một like nhé, cảm ơn bạn! .

Cuối cùng, bài viết này về biến Lua, kiểu dữ liệu, điều kiện phán đoán và bảng cấu trúc dữ liệu cũng như [hàm lua] kết thúc ở đây. Nếu bạn muốn biết thêm về biến Lua, kiểu dữ liệu, điều kiện phán đoán và bảng cấu trúc dữ liệu cũng như. nội dung của [lua function], vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

27 4 0
tôi là một con chim nhỏ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress