Câu hỏi Làm thế nào tôi có thể bỏ qua kết quả đầu tiên từ một hàm trong Lua?


Hàm Lua có thể trả về nhiều kết quả:

a, b, c = unpack({'one', 'two', 'three'})

Nếu tôi không quan tâm đến giá trị trả về thứ ba, tôi có thể chọn bỏ qua nó khi gọi hàm:

a, b = unpack({'one', 'two', 'three'})

Có cách nào tương tự để bỏ qua các phần tử X đầu tiên khi gọi hàm không?

Tôi có thể viết mã này nếu tôi chỉ muốn giá trị trả về thứ ba, nhưng tôi đã tự hỏi nếu một mã sạch hơn tồn tại:

_, _, c = unpack({'one', 'two', 'three'})

15
2017-07-02 13:01


gốc




Các câu trả lời:


Bạn có thể dùng select chức năng. Nó sẽ trả về tất cả các đối số sau index, Ở đâu index là đối số đầu tiên được trao cho select.

Ví dụ:

c = select(3, unpack({'one', 'two', 'three'}))
b, c = select(2, unpack({'one', 'two', 'three'}))
b = select(2, unpack({'one', 'two', 'three'}))   --discard last return value

Điều đó nói rằng, tôi nghĩ rằng trong hầu hết các trường hợp, viết _,_,c = f() sạch hơn. select chủ yếu hữu ích khi số đối số không được biết trước hoặc khi hàm chuỗi gọi cùng nhau (ví dụ: f(select(2, g())))


16
2017-07-02 13:08



Chính xác những gì tôi đang tìm kiếm, cảm ơn! - Thibault Falise