Có thể tạo mô-đun Lua trả về nhiều kết quả thông qua hàm yêu cầu? Tôi hiện đang viết một phần mở rộng cho package.loaders và tôi muốn biết nếu tôi cần hỗ trợ hành vi đó.Chức năng yêu cầu của Lua có thể trả về nhiều kết quả không?
Ví dụ, đi mô-đun sau, tên mod.lua
:
print("module loading")
return "string1", "string2"
Đó là yêu cầu của kịch bản sau đây:
print("running script")
s1, s2 = require("mod")
print("s1: " .. tostring(s1))
print("s2: " .. tostring(s2))
Kết quả trong đầu ra sau đây:
running script
module loading
s1: string1
s2: nil
Khi tôi mong đợi chuỗi thứ hai được trả về. Tôi không muốn sử dụng hành vi như vậy, và tôi nhận ra rằng bạn có thể tái tạo nó bằng cách trả về một bảng và giải nén nó, tôi chỉ muốn biết nếu nó có nghĩa là làm việc (vì nó là cú pháp Lua hợp lệ) và tôi không thể tìm thấy câu trả lời dứt khoát về điều này ở bất cứ đâu.
Vâng, có vẻ theo cách đó nhìn vào nguồn (Tôi đang ở trên Lua 5.2 và nó có cùng giá trị trả về). Tôi đoán hạn chế là một phần vì nó lưu trữ kết quả trong '_LOADED [" mod "]' và nó sẽ không thể trả về nhiều giá trị từ đó mà không đóng gói chúng trong một bảng và giải nén chúng một lần nữa, không cần thiết trong hầu hết các trường hợp. – GooseSerbus
@GooseSerbus Cũng vì 'require' thay đổi giá trị trả về. Nếu module trả về 'nil',' require' trả về 'true'. – finnw