Mô đun:Yesno/tài liệu
| Đây là một trang con tài liệu dành cho Mô đun:Yesno. Nó gồm có các thông tin hướng dẫn sử dụng, thể loại và các nội dung khác không thuộc về phần trang mô đun gốc. |
| Mô đun Lua này được sử dụng ở khoảng 1.670.000 trang, chiếm ≈ 36% tổng số trang. Để tránh gây lỗi trên quy mô lớn và tải máy chủ không cần thiết, tất cả thay đổi cần được thử nghiệm ở trang con /sandbox, /testcases của mô đun, hoặc ở chỗ thử mô đun. Các thay đổi đã được thử nghiệm có thể thêm vào mô đun bằng một sửa đổi duy nhất. Xin hãy thảo luận các thay đổi tại trang thảo luận trước khi áp dụng sửa đổi. |
| Mô đun này được xếp loại là đã sẵn sàng để sử dụng rộng rãi. Nó đã đạt đến mức độ hoàn thiện, được coi là khá ổn định và không có lỗi, và có thể được sử dụng bất kỳ chỗ nào nếu phù hợp. Nó có thể được nêu trên các trang trợ giúp cũng như các tài liệu Wikipedia khác làm tùy chọn tìm hiểu cho người dùng mới. Để giảm tải tài nguyên máy chủ và tránh tạo đầu ra gây hại, mọi cải tiến nên được thực hiện thông qua việc kiểm thử tại chỗ thử thay vì sửa đổi "thử và sai" lặp đi lặp lại liên tục. |
Mô đun này cung cấp một giao diện nhất quán để xử lý đầu vào là boolean hoặc chuỗi kiểu boolean. Trong khi Lua cho phép các giá trị boolean true (đúng) và false (sai), các bản mẫu mã wiki (wikicode) chỉ có thể thể hiện giá trị boolean thông qua các chuỗi như "yes", "no", v.v... Mô đun này xử lý các loại chuỗi đó và chuyển đổi chúng thành đầu vào boolean để Lua xử lý. Nó cũng trả về giá trị nil là nil, để cho phép phân biệt giữa nil và false. Mô đun cũng chấp nhận các cấu trúc Lua khác làm đầu vào, ví dụ: boolean, số, bảng (table) và hàm (function). Nếu nhận được đầu vào không được nhận dạng là boolean hoặc nil, ta có thể chỉ định một giá trị mặc định để trả về.
Cú pháp
yesno(value, default)value là giá trị cần kiểm tra. Đầu vào boolean hoặc kiểu boolean (xem bên dưới) luôn được tính là true hoặc false, và nil luôn được tính là nil. Các giá trị khác được tính là default (mặc định).
Cách sử dụng
Đầu tiên, hãy tải mô đun. Lưu ý rằng nó chỉ có thể được tải từ các mô đun Lua khác, không phải từ các trang wiki thông thường. Đối với các trang wiki thông thường, bạn có thể sử dụng {{yesno}} để thay thế.
local yesno = require('Module:Yesno')Một số giá trị đầu vào luôn trả về true, và một số luôn trả về false. Giá trị nil luôn trả về nil.
-- Những giá trị này luôn trả về true:yesno('yes')yesno('y')yesno('true')yesno('t')yesno('on')yesno('1')yesno(1)yesno(true)-- Các giá trị tiếng Việt cũng trả về true:yesno('có')yesno('c')yesno('thực')yesno('rồi')-- Những giá trị này luôn trả về false:yesno('no')yesno('n')yesno('false')yesno('f')yesno('off')yesno('0')yesno(0)yesno(false)-- Các giá trị tiếng Việt cũng trả về false:yesno('không')yesno('ko')yesno('k')yesno('sai')yesno('s')yesno('chưa')-- Giá trị nil luôn trả về nil:yesno(nil)Các giá trị chuỗi được chuyển đổi thành chữ thường (hỗ trợ Unicode/tiếng Việt) trước khi so khớp:
-- Những giá trị này luôn trả về true:yesno('Yes')yesno('YES')yesno('yEs')yesno('Y')yesno('tRuE')-- Tiếng Việt:yesno('CÓ')yesno('Thực')-- Những giá trị này luôn trả về false:yesno('No')yesno('NO')yesno('nO')yesno('N')yesno('fALsE')-- Tiếng Việt:yesno('KHÔNG')yesno('Sai')Đầu vào không xác định ('foo')
Bạn có thể chỉ định một giá trị mặc định nếu yesno nhận được đầu vào khác với những gì được liệt kê ở trên. Nếu bạn không cung cấp giá trị mặc định, mô đun sẽ trả về nil cho các đầu vào này.
-- Những trường hợp này trả về nil:yesno('foo')yesno({})yesno(5)yesno(function() return 'Đây là một hàm.' end)yesno(nil, true)yesno(nil, 'bar')-- Những trường hợp này trả về true:yesno('foo', true)yesno({}, true)yesno(5, true)yesno(function() return 'Đây là một hàm.' end, true)-- Những trường hợp này trả về "bar":yesno('foo', 'bar')yesno({}, 'bar')yesno(5, 'bar')yesno(function() return 'Đây là một hàm.' end, 'bar')Lưu ý rằng chuỗi rỗng cũng hoạt động theo cách này:
yesno('') -- Trả về nil.yesno('', true) -- Trả về true.yesno('', 'bar') -- Trả về "bar".Mặc dù chuỗi rỗng thường được coi là false (sai) trong wikitext, nó lại được coi là true (đúng) trong Lua. Mô đun này ưu tiên hành vi của Lua hơn hành vi của wikitext. Nếu việc coi chuỗi rỗng là false là quan trọng đối với mô đun của bạn, bạn sẽ cần chuyển đổi chuỗi rỗng thành một giá trị được coi là false trước khi chuyển chúng cho mô đun này. Trong trường hợp các đối số (arguments) nhận được từ wikitext, việc này có thể được thực hiện bằng cách sử dụng Module:Arguments.
Xử lý kết quả nil
Theo định nghĩa:
yesno(nil) -- Trả về nil.yesno('foo') -- Trả về nil.yesno(nil, true) -- Trả về nil.yesno(nil, false) -- Trả về nil.yesno('foo', true) -- Trả về true.
Để nhận được các giá trị nhị phân chỉ có true/false, hãy sử dụng mã như sau:
myvariable = yesno(value) or false -- Khi value là nil, kết quả là false.myvariable = yesno(value) or true -- Khi value là nil, kết quả là true.myvariable = yesno('foo') or false -- Chuỗi không xác định trả về nil, kết quả là false.myvariable = yesno('foo', true) or false -- Giá trị mặc định (ở đây là true) được áp dụng, kết quả là true.