Lompat ke konten
Aback Tools Logo

Cara Berkomentar di Lua: Komentar Satu Baris, Blok, dan Doc Luau

Cara berkomentar di Lua: komentar satu baris --, blok kurung siku panjang --[[ ]], level kurung siku untuk nesting, trik toggle, komentar doc --- Luau di Roblox Studio, dan penghapusan komentar sebelum deployment.

DH
Tutorials & How-Tos11 menit baca2,600 kata

Lua menggunakan dua gaya komentar: prefiks tanda hubung ganda untuk komentar satu baris dan pembatas kurung siku panjang untuk komentar blok multi-baris. Keduanya sederhana, tetapi sintaks multi-baris punya beberapa kasus tepi yang membuat tersandung pengembang yang datang dari bahasa bergaya C. Panduan ini mencakup semua bentuk komentar Lua, kapan menggunakan masing-masing, dan cara menghapusnya dengan bersih saat Anda siap melakukan deployment.

--Prefiks satu barisBerfungsi di baris mana pun
--[[ ]]Komentar blokMencakup baris tak terbatas
0Kata kunci khususTidak perlu kata kunci komentar

Mengapa komentar penting di Lua

Lua adalah bahasa minimalis dengan pengetikan dinamis. Ia tidak punya anotasi tipe formal, docstring wajib, atau generator dokumentasi bawaan. Itu menjadikan komentar mekanisme utama untuk menjelaskan maksud, mendokumentasikan tanda tangan fungsi, dan menandai perubahan kode sementara. Dalam bahasa di mana fungsi seperti `process(x, y, z)` tidak memberi petunjuk apa pun tentang arti x, y, dan z, satu baris komentar mencegah kebingungan berjam-jam bagi siapa pun yang membaca skrip itu nanti — termasuk diri Anda sendiri.

Komentar melayani tiga tujuan berbeda dalam kode Lua nyata: dokumentasi (menjelaskan apa yang dilakukan fungsi, variabel, atau modul), anotasi (menandai alasan di balik logika yang tidak jelas), dan debugging (menonaktifkan blok kode sementara tanpa menghapusnya). Setiap tujuan menuntut gaya berkomentar yang sedikit berbeda.

Di mana komentar Lua biasa digunakan

  • Header file - penulis, tanggal, nama modul, dan deskripsi singkat di bagian atas setiap skrip.
  • Dokumentasi fungsi - deskripsi parameter, nilai kembalian, dan efek samping tepat sebelum definisi fungsi.
  • Anotasi inline - catatan singkat di akhir baris yang menjelaskan angka ajaib, solusi sementara, atau dependensi.
  • Penonaktifan sementara - membungkus blok kode dalam komentar blok untuk mematikannya selama pengembangan tanpa kehilangan kode.
  • Penanda TODO / FIXME - menandai pekerjaan yang sedang berjalan atau bug yang diketahui untuk perhatian selanjutnya.

Note

Lua tidak punya format komentar dokumentasi bawaan seperti JSDoc atau docstring Python. Luau Language Server yang digunakan di Roblox Studio mengenali konvensi tanda hubung tiga `---` untuk anotasi tipe, tetapi itu adalah ekstensi tooling — runtime Lua sendiri memperlakukan `---` sebagai komentar satu baris biasa.

Komentar satu baris

Komentar satu baris adalah bentuk paling umum di Lua. Ia dimulai dengan dua tanda hubung berurutan (`--`) dan membentang sampai akhir baris saat ini. Interpreter sepenuhnya mengabaikan apa pun dari `--` hingga karakter baris baru berikutnya.

single_line_examples.lua
lua
-- This entire line is a comment
local speed = 150  -- pixels per second

-- TODO: replace magic number with a named constant
local MAX_RETRIES = 5

--[[ This looks like a block comment opener, but only if
     followed immediately by the double bracket ]]
-- The above is two separate single-line comments

Aturan penempatan

Komentar satu baris bisa muncul di mana saja tempat spasi kosong valid: di barisnya sendiri, di akhir pernyataan, atau di antara token. Satu-satunya batasan adalah `--` tidak boleh muncul di dalam literal string — di dalam tanda kutip atau kurung siku panjang, ia diperlakukan sebagai teks literal, bukan penanda komentar.

placement.lua
lua
local url = "https://example.com/api--v2"  -- the -- inside the string is NOT a comment
local greeting = "hello"  -- this end-of-line comment IS a comment

if speed > 100 then  -- check speed threshold
  slow_down()
end

Konvensi tanda hubung ganda

Berbeda dengan C atau JavaScript yang umum memakai `//`, Lua menggunakan `--` secara eksklusif. Jika Anda datang dari bahasa lain, ingatan otot mungkin mendorong Anda ke `//` atau `#`. Keduanya bukan penanda komentar yang valid di Lua standar — `//` adalah operator pembagian lantai di Lua 5.3+ dan `#` adalah operator panjang. Selalu gunakan `--` untuk komentar baris.

Warning

Menulis `// comment` di Lua 5.3 atau lebih baru tidak menghasilkan error sintaks — ia diparse sebagai pembagian lantai dari tanpa apa pun, yang memang menghasilkan error. Menulis `# comment` di awal file hanya diizinkan sebagai baris shebang (`#!/usr/bin/lua`) di sistem Unix; di tempat lain itu menyebabkan error sintaks. Gunakan `--` dalam semua kasus.

Komentar multi-baris (blok)

Komentar blok multi-baris di Lua menggunakan sintaks kurung siku panjang. Komentar blok dibuka dengan `--[[` dan ditutup dengan `]]`. Interpreter Lua mengabaikan apa pun di antara dua pembatas itu, termasuk baris baru, indentasi, dan urutan `--` apa pun di dalam blok.

block_comment.lua
lua
--[[
  Module: PlayerController
  Author: Dev Team
  Description: Handles player movement, jump mechanics, and ground detection.
  Dependencies: PhysicsEngine, InputMap
]]

local PlayerController = {}

--[[
  Moves the player by the given delta vector.
  @param player  table  The player object
  @param delta   vec2   Movement direction and magnitude
  @return        nil
]]
function PlayerController.move(player, delta)
  player.position = player.position + delta
end

Level kurung siku panjang untuk nesting

Blok `--[[ ]]` standar tidak bisa memuat `]]` secara literal — setiap `]]` di dalam blok mengakhiri komentar. Lua menyelesaikannya dengan level kurung siku: Anda menambahkan tanda sama dengan di antara kurung untuk membuat pasangan pembuka/penutup yang unik. Blok level-1 menggunakan `--[=[` dan `]=]`, level-2 menggunakan `--[==[` dan `]==]`, dan seterusnya. Pembatas penutup harus sama persis dengan level kurung pembuka.

nested_brackets.lua
lua
--[=[
  This is a level-1 block comment.
  It can safely contain standard --[[ double-bracket ]] syntax
  without ending the outer comment block early.
  Useful when commenting out existing block-commented code.
]=]

--[==[
  Level-2 block comment.
  Can contain both [[ ]] and [=[ ]=] inside it safely.
]==]

Komentar blok vs. beberapa komentar satu baris

AspekKomentar blok --[[ ]]Beberapa baris --
Sintaks--[[ ... ]]-- di setiap baris
Untuk menonaktifkan kode✓ Ideal - membungkus blok apa pun✗ Melelahkan untuk bagian panjang
Untuk dokumentasi✓ Standar untuk header file/fungsi✓ Umum untuk catatan inline
Toggle di editorBervariasi antar plugin editor✓ Sebagian besar editor otomatis toggle
Dukungan nesting✓ Dengan level kurung [=[ ]=]✗ Tidak berlaku
Keterbacaan✓ Batas mulai/akhir yang jelas✓ Mudah dipindai baris per baris

Tip

Sebagian besar editor yang sadar Lua (VS Code dengan ekstensi Lua, Roblox Studio, ZeroBrane) memiliki pintasan **toggle komentar** — biasanya Ctrl+/ atau Cmd+/ — yang menambah atau menghapus `--` dari baris yang dipilih. Untuk mengomentari blok kode besar, pendekatan manual `--[[` sering lebih cepat daripada men-toggle puluhan baris individual.

Mengomentari blok kode

Menonaktifkan sementara fungsi, loop, atau blok kondisional adalah salah satu penggunaan komentar paling praktis selama pengembangan. Sintaks komentar blok Lua membuat ini bersih dan dapat dibalik — tetapi ada pola umum yang membuat togglenya bahkan lebih cepat.

1

Bungkus blok dengan --[[ dan ]]

Letakkan `--[[` di barisnya sendiri tepat sebelum kode yang ingin Anda nonaktifkan, dan `]]` di barisnya sendiri tepat setelahnya. Interpreter Lua akan melewati seluruh blok. Tidak ada kode yang dihapus — Anda bisa memulihkannya seketika dengan menghapus dua baris pembatas.

2

Gunakan trik --[[ yang bisa di-toggle

Pengembang sering memakai pola toggle yang cerdas: menaruh `--[[` sebelum blok dan `--]]` (perhatikan `--` ekstra) di akhir. Untuk mengaktifkan kembali blok, mereka mengubah `--[[` menjadi `---[[`. Karena `---[[` kini adalah komentar satu baris (si `--` mengomentari `-[[`), blok tidak lagi berada di dalam komentar blok dan dieksekusi normal.

toggle_pattern.lua
lua
-- DISABLED: change --[[ to ---[[ to re-enable this block
--[[
local debug_overlay = require("DebugOverlay")
debug_overlay.show_hitboxes = true
debug_overlay.show_fps = true
--]]

-- To enable: change the opening --[[ to ---[[
---[[
local debug_overlay = require("DebugOverlay")
debug_overlay.show_hitboxes = true
debug_overlay.show_fps = true
--]]
3

Gunakan level kurung jika blok sudah berisi --[[ ]]

Jika kode yang Anda komentari sudah berisi komentar blok `--[[ ]]`, pembungkus `--[[` biasa akan berakhir di `]]` pertama yang ditemuinya — yaitu kurung penutup komentar bagian dalam, bukan milik Anda. Dalam kasus ini, gunakan blok level-1 `--[=[` dan tutup dengan `]=]` untuk membungkus blok luar dengan aman.

Validator Sintaks Lua

Setelah mengedit komentar atau merestrukturisasi blok, validasi skrip Lua Anda untuk error sintaks dan pembatas blok yang tak berpasangan dengan diagnostik sadar-baris.

Open tool

Praktik terbaik berkomentar

Mengetahui sintaks adalah bagian mudah. Mengetahui kapan dan cara berkomentar dengan baik itulah yang membedakan kode Lua yang mudah dirawat dari skrip yang mustahil dikerjakan enam bulan kemudian. Praktik-praktik ini berlaku khusus untuk Lua, meski sebagian besar adalah prinsip universal untuk bahasa pengetikan dinamis mana pun.

Komentari mengapa, bukan apa

Kode sudah menunjukkan apa yang terjadi. Komentar yang berbunyi `-- tambah i dengan 1` di samping `i = i + 1` tidak menambah informasi apa pun. Komentar memperoleh tempatnya saat menjelaskan keputusan: mengapa algoritme tertentu dipilih, mengapa batas diatur ke nilai tertentu, atau mengapa fungsi dipanggil dalam urutan yang tidak biasa. Jika penalarannya jelas dari kode itu sendiri, komentar bersifat opsional.

Dokumentasikan tanda tangan fungsi secara eksplisit

Lua tidak punya sistem tipe bawaan untuk mendokumentasikan parameter. Komentar blok singkat di atas setiap fungsi publik yang mencantumkan nama parameter, tipe yang diharapkan, dan nilai kembalian adalah salah satu kebiasaan berkomentar paling bernilai di Lua. Ini terutama berlaku untuk fungsi apa pun yang dikonsumsi kolaborator atau diekspos dalam modul.

documented_function.lua
lua
--[[
  Calculates the distance between two 2D points.
  @param x1 number  X coordinate of the first point
  @param y1 number  Y coordinate of the first point
  @param x2 number  X coordinate of the second point
  @param y2 number  Y coordinate of the second point
  @return   number  Euclidean distance between the two points
]]
local function distance(x1, y1, x2, y2)
  local dx = x2 - x1
  local dy = y2 - y1
  return math.sqrt(dx * dx + dy * dy)
end

Gunakan penanda TODO dan FIXME yang konsisten

Tandai pekerjaan yang belum selesai dengan prefiks yang konsisten agar bisa dicari. `-- TODO:` menandai perbaikan yang direncanakan, `-- FIXME:` menandai bug yang diketahui, dan `-- HACK:` menandai solusi sementara yang kelak butuh solusi proper. Sebagian besar editor dan alat pencarian kode mengenali prefiks ini dan dapat memfilter hasil agar hanya menampilkan baris yang ditandai.


Hindari berkomentar berlebihan

Skrip yang padat komentar untuk setiap penugasan variabel justru lebih sulit dibaca, bukan lebih mudah. Komentar menambah bobot visual — ketika setiap baris punya satu, komentar penting hilang dalam kebisingan. Kejar kepadatan komentar di mana komentar menandai pilihan yang benar-benar tidak jelas dan mendokumentasikan kontrak fungsi publik, bukan menarasikan setiap operasi.

  • Patut dikomentari: pilihan algoritme yang tidak jelas, angka ajaib dengan konteks bisnis, solusi sementara untuk bug yang diketahui.
  • Jangan dikomentari: nama variabel yang menjelaskan diri sendiri, idiom standar (seperti `for i = 1, #t do`), dan operasi yang jelas.
  • Patut dikomentari: setiap fungsi dalam modul bersama dengan tipe parameter dan nilai kembalian.
  • Jangan dikomentari: fungsi bantu privat yang tujuannya jelas dari namanya dan lokasi pemanggilannya.
  • Patut dikomentari: alasan di balik sebuah kondisional yang tidak intuitif jelas dari kondisinya sendiri.

Komentar di Roblox Luau

Roblox menggunakan Luau, turunan Lua 5.1 dengan pengetikan statis. Sintaks komentarnya identik dengan Lua standar — `--` untuk satu baris dan `--[[ ]]` untuk multi-baris. Luau menambahkan satu ekstensi bermakna: komentar dokumentasi tanda hubung tiga `---`, yang dibaca oleh Luau Language Server untuk menyediakan dokumentasi hover, petunjuk parameter, dan informasi tipe langsung di dalam Roblox Studio.

Komentar dokumentasi Luau (---)

Saat Anda menulis `---` di atas fungsi atau variabel, LSP Luau memperlakukan komentar itu sebagai dokumentasi terstruktur. Anda bisa menganotasi tipe parameter dengan `@param`, tipe kembalian dengan `@return`, dan pemberitahuan deprekasi dengan `@deprecated`. Ini tidak ditegakkan oleh runtime — dibaca oleh tooling language server dan ditampilkan sebagai tooltip di editor skrip Studio.

luau_doc_comment.lua
lua
--- Fires a projectile from the given origin in the given direction.
--- @param origin     Vector3  The world position to spawn the projectile
--- @param direction  Vector3  Normalised direction vector
--- @param speed      number   Initial speed in studs per second
--- @return           BasePart The spawned projectile part
local function fireProjectile(origin, direction, speed)
  -- implementation
end

Pola berkomentar praktis di Roblox

Dalam pengembangan Roblox, komentar melayani peran tambahan: membuat skrip mudah dibaca bagi kolaborator yang mungkin tidak menulis kode aslinya. Game Roblox sering tumbuh menjadi basis kode besar yang dirawat tim, dan komentar `--` adalah alat utama untuk mendokumentasikan kontrak remote event, API modul, dan tujuan setiap LocalScript.

  • Kontrak remote event - komentari argumen apa yang diharapkan sebuah RemoteEvent atau RemoteFunction, karena penerima tidak bisa melihat kode pemanggil.
  • Header API modul - gunakan blok `--[[ Module: ... ]]` di bagian atas setiap ModuleScript untuk menjelaskan tujuan dan antarmuka publiknya.
  • Kode yang dideprekasi - tandai API lama dengan `-- @deprecated: use NewFunction() instead` agar kolaborator tahu apa yang harus dihindari.
  • Pemisah bagian - gunakan pemisah bergaya `-- ------------------ Initialization ------------------` untuk mempartisi skrip panjang secara visual menjadi zona yang mudah dibaca.

Jika seseorang yang tidak mengenal basis kode Anda membuka skrip ini besok, apakah ia akan memahami apa yang dilakukan setiap fungsi tanpa menjalankan game? Itulah standar kualitas komentar yang patut dikejar.

- Praktik terbaik pengembangan Roblox

Lua Formatter

Format skrip Lua dan Luau Anda dengan indentasi dan spasi yang konsisten. Berbasis peramban, tanpa unggah, tanpa pendaftaran - berfungsi untuk skrip Roblox maupun Lua standar.

Open tool

Kapan menghapus komentar

Komentar esensial selama pengembangan, tetapi ada skenario spesifik di mana menghapusnya adalah langkah yang tepat: men-deploy skrip produksi, meng-obfuscate kode game, mengurangi ukuran file skrip, atau menyiapkan build minified untuk lingkungan yang sensitif performa.

Mengapa komentar memperbesar ukuran skrip

Di Lua, file sumber dikompilasi ke bytecode saat runtime. Komentar dibuang selama langkah kompilasi ini, sehingga tidak berdampak pada ukuran bytecode atau kecepatan eksekusi. Namun, di lingkungan tempat file sumber itu sendiri ditransfer — seperti Roblox Studio yang mereplikasi skrip ke klien game, atau server web yang menyajikan file konfigurasi Lua — ukuran teks mentah penting. Skrip yang penuh komentar bisa 20-40% lebih besar daripada padanan bebas komentarnya.

Menghapus komentar manual vs. dengan alat

Menghapus komentar secara manual rawan kesalahan. Mudah untuk tidak sengaja menghapus `]]` penutup yang milik string, bukan komentar, atau meninggalkan penanda komentar yatim yang menyebabkan error sintaks. Alat penghapus komentar khusus mem-parse tata bahasa Lua secara penuh dan memahami perbedaan antara `--` di dalam literal string dan `--` yang memulai komentar. Ia hanya membuang komentar asli sembari membiarkan string, logika, dan struktur sepenuhnya utuh.

Penghapus komentar Lua dari Aback Tools menangani komentar satu baris `--` dan multi-baris `--[[ ]]` dalam satu kali jalan. Ia berjalan sepenuhnya di peramban Anda — kode sumber Anda tidak pernah diunggah ke server mana pun. Tempel skrip Anda, klik hapus, dan dapatkan output yang bersih seketika.

Penghapusan komentar di pipeline deployment

Untuk skrip yang melewati tahap build, penghapusan komentar bisa digabung dengan optimisasi kode lain. Minifier Lua membuang komentar dan meringkas whitespace dalam satu langkah — berguna saat Anda ingin sekaligus file sumber yang mudah dibaca (dengan komentar) dan versi ter-deploy yang ringkas (tanpanya). Kompresor Lua melangkah lebih jauh, menampilkan perbandingan ukuran sebelum/sesudah agar Anda bisa mengukur tepat berapa banyak yang dihemat optimalisasi.

  • Sumber pengembangan - pertahankan semua komentar; gunakan formatter untuk menjaga struktur yang mudah dibaca.
  • Kontrol versi - commit sumber yang penuh komentar; jangan pernah commit file bebas komentar sebagai sumber kanonik.
  • Skrip ter-deploy/ter-replikasi - hapus komentar dengan penghapus komentar, lalu opsional minify untuk mengurangi ukuran.
  • Skrip ter-obfuscate - komentar selalu dihapus selama obfuscation; tidak perlu langkah manual.
  • Library open source - pertahankan komentar di sumber; opsional sediakan build minified di folder `/dist`.

Tip

Selalu perlakukan **file sumber berkomentar** sebagai versi kanonik dalam kontrol versi. Hasilkan build bebas komentar dan minified darinya sebagai artefak. Commit file minified atau bebas komentar sebagai sumber utama membuat pemeliharaan di masa depan jauh lebih sulit.

Penghapus Komentar Lua

Hapus semua komentar -- dan --[[ ]] dari skrip Lua mana pun dalam satu klik. Mempertahankan string, logika, dan struktur. Berbasis peramban dan sepenuhnya privat.

Open tool

Key takeaways

  • Lua menggunakan -- untuk komentar satu baris dan --[[ ]] untuk komentar blok multi-baris - tidak ada penanda komentar lain.
  • Level kurung siku panjang (--[=[ ]=], --[==[ ]==]) memungkinkan nesting komentar blok di dalam komentar blok.
  • Trik toggle --[[ (beralih antara --[[ dan ---[[) memungkinkan Anda mengaktifkan dan menonaktifkan blok kode dalam satu ketukan tombol.
  • Luau di Roblox Studio mendukung komentar doc --- untuk dokumentasi hover Luau Language Server - saat runtime tetap komentar biasa.
  • Komentari mengapa dan kontraknya, bukan apa - setiap operasi yang menjelaskan diri sendiri yang diberi komentar justru menambah kebisingan, bukan kejelasan.
  • Hapus komentar sebelum deployment dengan penghapus komentar Lua - ia menangani kedua gaya komentar tanpa menyentuh string.
  • Selalu simpan sumber yang penuh komentar di kontrol versi; hasilkan build bebas komentar atau minified sebagai artefak deployment.

Pertanyaan yang sering diajukan

In Lua, you write a single-line comment by starting a line (or the end of a line) with two hyphens: --. Everything after the -- on that line is ignored by the interpreter. For multi-line comments, use --[[ to open the block and ]] to close it. Everything between those delimiters is treated as a comment, regardless of how many lines it spans.

The Lua multi-line comment syntax uses long brackets: --[[ to open and ]] to close. You can also use long bracket levels for nesting - --[=[ opens a level-1 block closed by ]=], --[==[ opens a level-2 block closed by ]==], and so on. This nesting feature lets you comment out blocks that already contain standard --[[ ]] comments without breaking the outer comment.

Yes. Lua supports block (multi-line) comments using the --[[ ... ]] syntax. The opening delimiter is -- followed by a long bracket [[ and the closing delimiter is the matching ]]. Block comments can span any number of lines and are commonly used for file headers, function documentation, and temporarily disabling sections of code during debugging.

Wrap the section with --[[ on its own line before the code and ]] on its own line after it. The interpreter will ignore everything in between. If the code you are commenting out itself contains --[[ ]] blocks, use a higher bracket level like --[=[ ... ]=] for the outer comment to avoid the inner ]] terminating the block early.

A double hyphen -- starts a single-line comment that ends at the next newline. Adding long brackets immediately after the -- (i.e. --[[) turns it into a block comment that spans multiple lines until the matching ]]. The -- is always the comment marker in Lua; the long brackets control whether the comment terminates at end-of-line or at an explicit closing delimiter.

Not directly with plain --[[ ]] - a ]] inside a --[[ block will close the comment early. To nest comments, use increasing bracket levels. --[=[ ... ]=] and --[==[ ... ]==] are level-1 and level-2 block comments respectively. You can nest --[[ ]] inside --[=[ ]=] safely because the closing ]] does not match the outer ]=].

It depends on your goal. For production deployments or minified game scripts where file size and load time matter, removing comments is good practice - it reduces the script size and makes the code harder to casually read. For open-source libraries or any code you maintain long-term, keep comments in the source file and only strip them in the deployed build.

Luau, Roblox's derivative of Lua 5.1, uses identical comment syntax: -- for single-line and --[[ ]] for multi-line block comments. Luau also supports a documentation comment convention using --- (triple hyphen) for type-annotation comments that tools like Luau Language Server read for hover documentation. These are still plain Lua comments at runtime - the Roblox engine ignores them like any other comment.

ShareXLinkedIn