2010-07-02 30 views
12

chức năng Lua có thể trả về nhiều kết quả:Làm cách nào để bỏ qua các kết quả đầu tiên từ một hàm trong Lua?

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ó một tương tự cách bỏ qua các phần tử X đầu tiên khi gọi hàm?

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 tồn tại:

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

Trả lời

13

Bạn có thể sử dụng chức năng select. Nó sẽ trả về tất cả các đối số sau index, trong đó index là đối số đầu tiên được gán 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 nhiều trường hợp, viết _,_,c = f() là 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())))

+0

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

Các vấn đề liên quan