2013-02-03 31 views
5

Tôi mới đến Lua và tôi đã tự hỏi nếu có một số cách nhỏ gọn để xác định một list, một metatable trong Lua như chúng ta làm bằng Python:ngôn ngữ Lua: làm thế nào sử dụng một cái gì đó tương tự như danh sách python comprehensions

lis = [i for i in set if i>0] 

Bất kỳ ví dụ nào sẽ được đánh giá cao.

+2

Điều duy nhất tương tự như tôi đã thấy là [này sử dụng thế hệ code] (http://lua-users.org/wiki/ListComprehensions) . –

+1

mặc dù lua stdlib không cung cấp một số tiện ích lập trình chức năng, [filter] (https://github.com/rrthomas/lua-stdlib/blob/origin/src/base.lua) là một trong những hiện điều này –

Trả lời

2

Lua không có danh sách gốc

Tuy nhiên như @joachim đã chỉ ra, có một số hack bạn có thể sử dụng để đạt được.

local comp = require 'comprehension' . new() 
comp 'table(v,k for k,v in pairs(_1))' {[3]=5, [5]=7} 

Nó sẽ mang lại:

{[5]=3, [7]=5} 

ý rằng comprehension không hoạt động trong 5.2.x đồng bằng Lua. Nó đòi hỏi penlight Lua Libraries: http://stevedonovan.github.com/Penlight/api/index.html

Bạn cũng có thể sử dụng MetaLua hoặc LuaMacros

+1

Về cơ bản không có _native_ cách để làm điều đó? –

+2

@UbuntuSilva No –

+0

Đúng vậy. Lua không có List List Comprehension – ppaulojr

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