Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Đề cương khóa học
Giới thiệu về Lua
- Một chút lịch sử
- Mục tiêu, tính năng và những điều không thuộc phạm vi của Lua
- Tài nguyên tài liệu và hướng dẫn của Lua
- Cài đặt trình thông dịch Lua
- Thiết lập và sử dụng LuaRocks
Cú pháp và ngữ nghĩa cơ bản
- Định danh
- Bình luận, bình luận khối
- Biến toàn cục và thực thi nghiêm ngặt
- Biến cục bộ
- Chương trình độc lập, đối số chương trình
- Đơn vị biên dịch, khối, biểu thức, dấu chấm phẩy
Kiểu dữ liệu và cấu trúc dữ liệu
- Các kiểu cơ bản: nil, boolean, number, string
- Các kiểu đối tượng: function, userdata, thread, table
- Tham chiếu/đối tượng so với các giá trị cơ bản
- Tầm quan trọng của bảng (tables) trong Lua
Giới thiệu về bảng (tables) và tính linh hoạt của chúng
- Bảng như một mảng kết hợp
- Bảng như mảng số, chuỗi
Các cấu trúc điều khiển cơ bản
- Cấu trúc if then elseif else end
- Vòng lặp while
- Vòng lặp repeat
- Vòng lặp for đơn giản
Xử lý lỗi
- Giá trị trả về so với ngoại lệ
- Chuyển đổi giá trị trả về thành ngoại lệ
- Chuyển đổi ngoại lệ thành giá trị trả về
- Mức độ nghiêm trọng của lỗi
Các chương trình ví dụ
- Đánh giá đa thức
- Tìm kiếm theo chiều rộng
- Các bài tập bổ sung
Tìm hiểu thêm về hàm
- Đối số được đặt tên
- Gọi hướng đối tượng
- Closures
- Currying
- Gọi đuôi (Tail calls)
- Gán và trả về nhiều giá trị
- Varargs
Iterators và co-routines
- Vòng lặp for tổng quát
- Iterators không trạng thái so với có trạng thái
- Sự khác biệt giữa iterators và co-routines
Metatables và metamethods
- Ví dụ về tập hợp
- Metamethod __tostring
- Metamethods số học
- Metamethods __index, __newindex
- Metamethod __len
Modules và packages
- Sử dụng modules
- Tạo modules
- Tổ chức modules thành packages
Bảng nâng cao
- Bảng cho hàng đợi và ngăn xếp
- Bảng mô tả đồ thị
- Ma trận dưới dạng bảng
- Danh sách liên kết dưới dạng bảng
- Bộ đệm chuỗi
Metatables thông qua các ví dụ
- Proxies
- Chỉ đọc
- Memoization
- Lập trình động với memoization
- Ví dụ về Fibonacci
Environments
- Mối quan hệ giữa biến toàn cục và environments
- Biến tự do
- Bảng _ENV và bảng _G
Tìm hiểu thêm về modules
- Các cách khác nhau để tạo modules
- Modules thay đổi hành vi
- Khởi tạo và đối số module
- Sử dụng environments để triển khai modules an toàn
Iterators và co-routines nâng cao
- Producer, consumer, filter
- Bọc co-routines để lấy iterators
- Iterator không trạng thái cho danh sách liên kết
Đóng góp cho Hệ sinh thái
- Tải packages lên MoonRocks
Mô hình lập trình hàm trong Lua
- Hàm map
- Hàm reduce / fold
Hướng đối tượng trong Programming
- Các cách tiếp cận OOP khác nhau
- Các cách tiếp cận kế thừa khác nhau
- Ví dụ
Tổng quan về Thư viện Tiêu chuẩn Lua
Biên dịch
- Biên dịch
- Đánh giá
- Mối quan hệ với environment
- Các khối nhị phân
Thu gom rác
- Bảng yếu
- Finalizers, meta-method __gc
Bytecode và Máy ảo Lua
- Tạo bytecode từ mã nguồn
- Đọc và phân tích bytecode
- Tổng quan nhanh về mã nguồn của Máy ảo Lua
Modules C
- Gọi C từ Lua
- Đường dẫn tìm kiếm và tải modules C
Gọi Lua từ C
- Stack
- Xử lý lỗi
- Continuations
Xử lý các giá trị và kiểu Lua từ C
- Mảng
- Chuỗi
- Userdata
- Metatables
- Gọi hướng đối tượng
- Light userdata
Quản lý bộ nhớ
- Allocators
- GC API
Threads trong Lua
- Co-routines so với threads
- Đa luồng thực tế và trạng thái Lua
Requirements
Có kiến thức về ít nhất một ngôn ngữ lập trình khác. Kinh nghiệm Programming. Nếu bạn có thêm kiến thức về các ngôn ngữ kịch bản khác, điều đó sẽ giúp bạn dễ dàng hiểu Lua hơn.
21 Hours