Nếu dấu ngoặc nhọn ('{' và '}') được sử dụng trong Lua, chúng được sử dụng để làm gì?Dấu ngoặc nhọn có được sử dụng trong Lua không?
Trả lời
Bảng chữ.
Bảng là loại trung tâm trong Lua và có thể được coi là mảng kết hợp (bảng băm hoặc từ điển) hoặc dưới dạng mảng thông thường. Các khóa có thể là giá trị của bất kỳ loại Lua nào ngoại trừ nil
và các thành phần của bảng có thể chứa bất kỳ giá trị nào trừ số nil
.
Truy cập thành viên mảng được thực hiện hiệu quả hơn truy cập khóa băm phía sau hậu trường, nhưng chi tiết thường không quan trọng. Điều đó thực sự làm cho việc xử lý các mảng thưa thớt có ích vì lưu trữ chỉ cần được cấp phát cho những ô có chứa một giá trị nào đó.
Điều này dẫn đến thành phần mảng dựa trên 1 phổ quát cảm thấy hơi lạ đối với lập trình viên C.
Ví dụ
a = { 1, 2, 3 }
tạo một mảng lưu trữ trong biến a
với ba yếu tố (tình cờ) có giá trị tương tự như chỉ số của họ. Bởi vì các yếu tố được lưu trữ tại các chỉ số tuần tự bắt đầu với 1, chiều dài của a
(do #a
hoặc table.getn(a)
) là 3.
Khởi tạo một bảng với các phím không số nguyên có thể được thực hiện như thế này:
b = { one=1, pi=3.14, ["half pi"]=1.57, [function() return 17 end]=42 }
trong đó b
sẽ có các mục có tên "một", "pi", "half pi" và chức năng ẩn danh. Tất nhiên, tìm kiếm phần tử cuối cùng mà không lặp lại bảng có thể khó khăn trừ khi một bản sao của hàm đó được lưu trữ trong một số biến khác.
Một nơi khác mà dấu ngoặc nhọn xuất hiện thực sự là ý nghĩa ngữ nghĩa tương tự, nhưng nó được che giấu (đối với người dùng mới của Lua) đằng sau một số cú pháp đường. Việc viết các hàm có một đối số duy nhất là một bảng. Trong trường hợp đó, việc gọi hàm không yêu cầu sử dụng dấu ngoặc đơn. Điều này dẫn đến mã dường như chứa một kết hợp của ()
và {}
cả hai dường như được sử dụng như một toán tử cuộc gọi hàm.
btn = iup.button{title="ok"}
tương đương với
btn = iup.button({title="ok"})
nhưng cũng ít khó khăn trên con mắt. Ngẫu nhiên, việc gọi một hàm đối số đơn lẻ với một giá trị bằng chữ cũng hoạt động đối với các chuỗi ký tự.
danh sách/phương thức khởi tạo ditionary (nghĩa là hàm tạo bảng).
Chúng không được sử dụng cho các khối mã nếu đó là ý của bạn. Cho rằng Lua chỉ sử dụng từ khóa kết thúc để kết thúc khối.
Ah, phải rồi, bây giờ tôi cảm thấy ngớ ngẩn. – Sydius
Không có danh sách hoặc từ điển nào trong Lua, nhưng có một loại "bảng" phục vụ cả hai. Các dấu ngoặc nhọn được sử dụng như một hàm tạo bảng. –
@Alexander Gladysh: Cảm ơn, tôi đã điều chỉnh câu trả lời của mình. –
Họ đang sử dụng cho literals bảng như bạn sẽ sử dụng trong C:
t = {'a', 'b', 'c'}
Đó là trường hợp phổ biến mà thôi. Chúng không được sử dụng cho các dấu phân tách khối.Trong một bảng lua, bạn có thể đặt các giá trị của các loại khác nhau:
t={"foo", 'b', 3}
Bạn cũng có thể sử dụng chúng như dictionnaries, à la Python:
t={name="foo", age=32}
- 1. Khối - dấu ngoặc nhọn/không có dấu ngoặc nhọn?
- 2. sử dụng Odd của dấu ngoặc nhọn trong C
- 3. Câu lệnh sử dụng có thể được thay thế bằng dấu ngoặc nhọn không?
- 4. Dấu ngoặc nhọn thêm trong mã C++
- 5. Eclipse và dấu ngoặc nhọn
- 6. Ký hiệu dấu ngoặc nhọn trong PHP
- 7. Bạn có sử dụng dấu ngoặc nhọn cho phạm vi bổ sung không?
- 8. Dấu ngoặc nhọn có nghĩa gì trong chuỗi C#?
- 9. Python subprocess để Bash: dấu ngoặc nhọn
- 10. Dấu ngoặc nhọn/dấu ngoặc rỗng có nghĩa là gì trong Java?
- 11. Dấu ngoặc đơn sau dấu ngoặc nhọn có nghĩa là gì?
- 12. Truy vấn cột dấu ngoặc nhọn oracle
- 13. Câu lệnh C# có thể được viết mà không có dấu ngoặc nhọn không?
- 14. dấu chấm phẩy sau dấu ngoặc nhọn trong c + +
- 15. Ghép cặp dấu ngoặc nhọn, dấu ngoặc đơn và dấu ngoặc đơn
- 16. Dấu ngoặc nhọn (< or >) có đặc biệt trong cụm từ thông dụng không?
- 17. Ba dấu ngoặc nhọn cùng nhau trong mã nguồn php
- 18. PHP: Các dấu ngoặc nhọn trong biến $ {0} làm gì?
- 19. Liều lượng dấu ngoặc nhọn và dấu phần trăm có nghĩa là gì trong html?
- 20. Sử dụng dấu ngoặc nhọn cho mã cấu trúc trong PHP
- 21. Bỏ dấu ngoặc nhọn cho một băm trong mảng
- 22. Sự khác biệt giữa() (dấu ngoặc đơn) và {} (dấu ngoặc nhọn) trong Razor
- 23. Làm cách nào để nhập dấu ngoặc nhọn trong bibtex?
- 24. Làm thế nào để đóng dấu ngoặc nhọn trong PHP
- 25. PHP dấu ngoặc nhọn trong ký hiệu mảng
- 26. Xuất ra dấu ngoặc nhọn Literal trong mẫu lỏng
- 27. Dấu ngoặc nhọn trong JavaScript nghĩa là gì?
- 28. Nhận giá trị giữa các dấu ngoặc nhọn C#
- 29. ReSharper - buộc dấu ngoặc nhọn xung quanh dòng
- 30. SED tìm và thay thế bằng dấu ngoặc nhọn
tôi rất tò mò về việc thêm một tiền xử lý đơn giản để thay thế chúng với "làm/sau đó" và "kết thúc" để làm cho nó ít tiết hơn một chút. – Sydius
Hãy xem bộ lọc mã thông báo và metalua, cả hai được tham chiếu thường xuyên trong danh sách gửi thư Lua-L được tìm thấy tại www.lua.org. Cả hai đều cung cấp các cách để sửa đổi ngôn ngữ ở cấp cây cú pháp trừu tượng và có thể thực hiện điều này. Một preprocessor sẽ cần phải làm rất nhiều phân tích cú pháp để làm cho nó đúng. – RBerteig