Modul:Example
Halaman ini, sama seperti yang lain di sini, ada sebagai referensi dengan demonstrasi, contoh, dsb. Ini tidak termasuk bagian dari ensiklopedia. |
Ini adalah contoh dokumentasi modul, digunakan untuk demonstrasi dan sejenisnya.
Lihat pula
sunting- Modul:Bak pasir: untuk berlatih/bereksperimen/mengetes modul.
local p = {}; --Setiap modul Lua di Wikipedia harus dimulai dengan mendefinisikan
--sebuah variabel yang akan memegang fungsinya yang dapat diakses
--secara eksternal.
--Variabel-variabel tersebut dapat dinamai sesuai keinginan Anda
--dan mungkin mengandung bermacam-macam data maupun fungsi juga.
p.hello = function( frame ) --Menambahkan sebuah fungsi ke "p".
--Fungsi tersebut dapat dipanggil di Wikipedia
--melalui perintah #invoke.
--"frame" akan berisi data yang dikirim Wikipedia
--ketika fungsi ini dijalankan.
-- 'Hello' adalah nama yang Anda pilih. Nama yang sama dirujuk ketika modul digunakan.
local str = "Hello World!" --Mendeklarasikan variabel lokal dan mengaturnya
--sama dengan "Hello World!"
return str --Pemberitahuan untuk keluar dari fungsi ini dan mengirimkan
--informasi di "str" kembali ke Wikipedia.
end --akhir dari fungsi "hello"
function p.hello_to(frame) --Menambahkan fungsi lain
local name = frame.args[1] --Untuk mengakses argumen yang diteruskan ke modul,
--gunakan `frame.args`, `frame.args[1]` merujuk
--kepada parameter tanpa nama pertama yang diberikan
--kepada modul.
return "Halo, " .. name .. "!" -- `..` menggabungkan string. Ini akan memunculkan
-- salam yang disesuaikan dengan nama yang diberikan,
-- seperti "Halo, Fred!"
end
function p.count_fruit(frame)
local num_bananas = frame.args.bananas -- Argumen bernama ({{#invoke:Example|count_fruit|foo=bar}}) yang juga
local num_apples = frame.args.apples -- diakses dengan mengindeks `frame.args` dari nama (`frame.args["bananas"]`, or)
-- ekuivalen dengan `frame.args.bananas`.
return 'Aku punya ' .. num_bananas .. ' pisang dan ' .. num_apples .. ' apel'
-- Sama seperti yang di atas, menggabungkan
-- sekelompok string bersama-sama untuk
-- menghasilkan sebuah kalimat berdasarkan
-- argumen yang diberikan.
end
local function lucky(a, b) -- Seseorang dapat mendefinisikan fungsi khusus untuk digunakan. Di sini kita definisikan fungsi 'lucky' yang mempunyai dua input a dan b. Nama tersebut dapat sesuai keinginan Anda.
if b == 'yeah' then -- Kondisi: jika b adalah string 'yeah'. String membutuhkan tanda kutip. Jangan lupa berikan 'then'.
return a .. ' adalah angka keberuntunganku.' -- Outputnya 'a adalah angka keberuntunganku.' jika kondisinya sesuai dengan yang di atas. Penggabungan string ditandai dengan 2 titik.
else -- Jika tidak ada kondisi yang sesuai, yaitu apabila b berisi selain 'yeah', output ditentukan di baris selanjutnya. 'else' seharusnya tidak diikuti 'then'.
return a -- Hanya ber-output a.
end -- Bagian 'if' harus diakhiri dengan 'end'.
end -- Sebagaimana 'function' pada umumnya.
function p.Name2(frame)
-- Lima baris berikutnya sebagian besar untuk mempermudah saja dan dapat digunakan untuk modul Anda.
local pf = frame:getParent().args -- Baris ini memperbolehkan parameter templat digunakan di kode ini dengan mudah. Tanda sama dengan dipakai untuk mendefinisikan variabel. 'pf' dapat diganti dengan kata yang Anda pilih.
local f = frame.args -- Baris ini memperbolehkan parameter dari {{#invoke:}} dipakai dengan mudah. 'f' dapat diganti dengan kata yang Anda pilih.
local M = f[1] or pf[1] -- f[1] dan pf[1], yang baru saja didefinisikan, merujuk kepada parameter pertama. Baris ini disingkat 'M' untuk menggabungkannya. Anda dapat memakai nama asli variabel.
local m = f[2] or pf[2] -- Parameter kedua yang disingkat 'm'.
local l = f.lucky or pf.lucky -- Parameter bernama 'lucky' disingkat sebagai l. Perhatikan bahwa sintaksnya berbeda dengan parameter tanpa nama.
if m == nil then -- Jika parameter kedua tidak dipakai.
return 'Kesepian' -- Outputkan string 'Kesepian' jika kondisi pertama sesuai.
elseif M > m then -- Jika kondisi pertama tak sesuai, baris ini menguji salah satu kondisi kedua: apabila M lebih besar dari m.
return lucky(M - m, l) -- Apabila kondisi sesuai, dihitung selisihnya dan diteruskan ke fungsi yang didefinisikan sendiri bersama dengan l. Outputnya tergantung apakah l diatur ke 'yeah'.
else
return 'Be positive!'
end
end
return p --Semua modul diakhiri dengan me-return variabelnya yang berisi fungsinya ke Wikipedia.
-- Sekarang kita bisa gunakan modulnya dengan memanggil {{#invoke: Example | hello }},
-- {{#invoke: Example | hello_to | foo }}, atau {{#invoke:Example|count_fruit|bananas=5|apples=6}}
-- Perhatikan bahwa bagian pertama invoke adalah nama halaman wiki dari Modul,
-- dan bagian kedua adalah nama salah satu fungsi yang melekat kepada
-- variabel yang Anda return-kan.
-- Fungsi "print" tidak diperbolehkan di Wikipedia. Semua output diselesaikan
-- melalui string "returned" (dikembalikan) ke Wikipedia.