Lua - Standard Libraries

Hello, aspiring programmers! Today, we're going to embark on an exciting journey through Lua's standard libraries. As your friendly neighborhood computer teacher, I'm here to guide you through these powerful tools that will make your Lua programming experience both enjoyable and productive. Let's dive in!

Lua - Standard Libraries

Basic Library

The Basic Library is like the Swiss Army knife of Lua programming. It contains essential functions that you'll use in almost every Lua script you write. Let's look at some of the most common ones:

print()

print("Hello, World!")

This simple line outputs "Hello, World!" to the console. It's often the first thing you'll learn in any programming language, and Lua is no exception!

type()

local myVariable = 42
print(type(myVariable))  -- Output: number

The type() function tells us what kind of data we're dealing with. In this case, it tells us that myVariable is a number.

tonumber() and tostring()

local myString = "123"
local myNumber = tonumber(myString)
print(myNumber + 7)  -- Output: 130

local backToString = tostring(myNumber)
print(type(backToString))  -- Output: string

These functions convert between strings and numbers. They're incredibly useful when you're dealing with user input or data from files.

Modules Library

Modules in Lua are like building blocks that you can use to construct your program. The Modules Library helps you manage these blocks efficiently.

require()

local myModule = require("myModule")

This function loads and runs the Lua file "myModule.lua", and returns whatever that module returns. It's how we include external code in our scripts.

String manipulation

Lua provides a powerful set of string manipulation functions. Let's look at a few:

string.upper() and string.lower()

local myString = "Hello, World!"
print(string.upper(myString))  -- Output: HELLO, WORLD!
print(string.lower(myString))  -- Output: hello, world!

These functions convert strings to uppercase or lowercase, respectively.

string.sub()

local myString = "Lua is awesome!"
print(string.sub(myString, 1, 3))  -- Output: Lua
print(string.sub(myString, -8))    -- Output: awesome!

string.sub() extracts a portion of a string. The first number is the start position, and the second (optional) number is the end position.

Table manipulation

Tables in Lua are incredibly versatile. They can be used as arrays, dictionaries, or a mix of both. Here are some useful functions for working with tables:

table.insert()

local myFruits = {"apple", "banana"}
table.insert(myFruits, "cherry")
print(myFruits[3])  -- Output: cherry

This function adds an element to the end of a table, or at a specified position if you provide an index.

table.remove()

local myNumbers = {10, 20, 30, 40}
local removed = table.remove(myNumbers, 2)
print(removed)  -- Output: 20
print(myNumbers[2])  -- Output: 30

table.remove() takes out an element from a table and returns it. If no index is specified, it removes the last element.

File Input and output

Working with files is crucial for many applications. Lua provides an easy-to-use interface for file operations:

io.open()

local file = io.open("example.txt", "w")
file:write("Hello, File!")
file:close()

file = io.open("example.txt", "r")
local content = file:read("*all")
print(content)  -- Output: Hello, File!
file:close()

This example shows how to open a file for writing, write to it, close it, then open it again for reading and read its contents.

Debug facilities

Debugging is an essential skill for any programmer. Lua provides several functions to help you understand and fix issues in your code:

debug.traceback()

function foo()
print(debug.traceback())
end

foo()

This function prints a stack trace, which can be incredibly helpful when trying to understand where an error occurred in your program.

debug.getinfo()

function exampleFunction()
local info = debug.getinfo(1)
print("This function is defined in file " .. info.short_src .. " on line " .. info.linedefined)
end

exampleFunction()

debug.getinfo() provides information about a function, including where it's defined and its parameters.

That's it for our whirlwind tour of Lua's standard libraries! Remember, practice makes perfect. Don't be afraid to experiment with these functions and see what you can create. Happy coding, future Lua masters!

Library Key Functions
Basic print(), type(), tonumber(), tostring()
Modules require()
String string.upper(), string.lower(), string.sub()
Table table.insert(), table.remove()
File I/O io.open(), file:write(), file:read(), file:close()
Debug debug.traceback(), debug.getinfo()

Penerjemahan ke Bahasa Melayu (ms):

# Pustaka Standard Lua

Hai, para pemrogram yang sedang belajar! Hari ini, kita akan melangkah ke dalam perjalanan yang menarik melalui pustaka standard Lua. Sebagai guru komputer yang ramah di lingkungan sekitar anda, saya disini untuk mengorbit anda melalui alat-alat kuat ini yang akan membuat pengalaman pemrograman Lua anda menyenangkan dan produktif. Mari kita masuk ke dalam!

## Pustaka Asas

Pustaka Asas adalah seperti pisau瑞士军刀 dalam pemrograman Lua. Ia mengandungi fungsi penting yang anda akan gunakan hampir dalam setiap skrip Lua yang anda tulis. Mari kita lihat beberapa yang paling biasa:

### print()

```lua
print("Hello, World!")

Baris ini mudah menampilkan "Hello, World!" ke konsol. Ini biasanya adalah hal pertama yang anda belajar dalam mana-mana bahasa pemrograman, dan Lua tak ada pengecualian!

type()

local myVariable = 42
print(type(myVariable))  -- Output: number

Fungsi type() memberitahu kita jenis data yang kita hadapi. Dalam kes ini, ia memberitahu kita bahawa myVariable adalah nombor.

tonumber() dan tostring()

local myString = "123"
local myNumber = tonumber(myString)
print(myNumber + 7)  -- Output: 130

local backToString = tostring(myNumber)
print(type(backToString))  -- Output: string

Fungsi ini menukar antara string dan nombor. Mereka sangat berguna ketika anda berurusan dengan input pengguna atau data dari fail.

Pustaka Modul

Modul dalam Lua adalah seperti blok bangunan yang anda boleh gunakan untuk membina program anda. Pustaka Modul membantu anda menguruskan blok-blok ini secara efektif.

require()

local myModule = require("myModule")

Fungsi ini memuatkan dan menjalankan fail Lua "myModule.lua", dan mengembalikan apa saja yang modul itu kembalikan. Ini adalah bagaimana kita menyertakan kod eksternal dalam skrip kita.

Penyusunan String

Lua menyediakan set kuat fungsi penyusunan string. Mari kita lihat beberapa:

string.upper() dan string.lower()

local myString = "Hello, World!"
print(string.upper(myString))  -- Output: HELLO, WORLD!
print(string.lower(myString))  -- Output: hello, world!

Fungsi ini menukar string ke huruf besar atau kecil, masing-masing.

string.sub()

local myString = "Lua is awesome!"
print(string.sub(myString, 1, 3))  -- Output: Lua
print(string.sub(myString, -8))    -- Output: awesome!

string.sub() mengambil sebahagian daripada string. Nombor pertama adalah kedudukan mula, dan nombor kedua (opsional) adalah kedudukan akhir.

Penyusunan Tabel

Tabel dalam Lua adalah sangat pelbagai guna. Mereka boleh digunakan sebagai array, dictionary, atau campuran kedua-duanya. Berikut adalah beberapa fungsi yang berguna untuk bekerja dengan tabel:

table.insert()

local myFruits = {"apple", "banana"}
table.insert(myFruits, "cherry")
print(myFruits[3])  -- Output: cherry

Fungsi ini menambah elemen ke akhir tabel, atau di posisi yang ditentukan jika anda memberikan indeks.

table.remove()

local myNumbers = {10, 20, 30, 40}
local removed = table.remove(myNumbers, 2)
print(removed)  -- Output: 20
print(myNumbers[2])  -- Output: 30

table.remove() mengeluarkan elemen daripada tabel dan mengembalikannya. Jika tiada indeks ditentukan, ia menghapus elemen terakhir.

Input dan Output Fail

Bekerja dengan fail adalah penting bagi banyak aplikasi. Lua menyediakan antara muka yang mudah untuk operasi fail:

io.open()

local file = io.open("example.txt", "w")
file:write("Hello, File!")
file:close()

file = io.open("example.txt", "r")
local content = file:read("*all")
print(content)  -- Output: Hello, File!
file:close()

Contoh ini menunjukkan bagaimana untuk membuka fail untuk menulis, menulis kepadanya, menutupnya, kemudian membukanya lagi untuk membaca dan membaca isinya.

Fasiliti Penyahpepijat

Penyahpepijat adalah keterampilan penting bagi mana-mana pemrogramer. Lua menyediakan beberapa fungsi untuk membantu anda memahami dan memperbaiki masalah dalam kod anda:

debug.traceback()

function foo()
print(debug.traceback())
end

foo()

Fungsi ini mencetak tracetack, yang dapat sangat membantu saat mencoba untuk memahami di mana kesalahan terjadi dalam program anda.

debug.getinfo()

function exampleFunction()
local info = debug.getinfo(1)
print("Fungsi ini didefinisikan dalam fail " .. info.short_src .. " di baris " .. info.linedefined)
end

exampleFunction()

debug.getinfo() menyediakan informasi tentang fungsi, termasuk di mana ia didefinisikan dan parameternya.

Itu saja untuk perjalanan singkat kita melalui pustaka standard Lua! Ingat, latihan membuat sempurna. Jangan takut untuk mencoba fungsi-fungsi ini dan lihat apa yang anda boleh buat. Selamat coding, para master Lua masa depan!

Credits: Image by storyset