在 Lua 中没有内置的 Linq 库,但可以手动实现类似于 Linq 的功能。以下是一些常用的手写 Linq 函数及其用法:
### map
map 函数可以将一个列表中的每个元素都应用一个函数,并返回一个新的列表。
```lua
function map(list, func)
local new_list = {}
for i, v in ipairs(list) do
new_list[i] = func(v)
end
return new_list
end
-- 使用示例
local list = {1, 2, 3, 4}
local new_list = map(list, function(x) return x * 2 end)
print(table.concat(new_list, ", ")) -- 输出:2, 4, 6, 8
```
### filter
filter 函数可以根据一个条件过滤出一个列表中符合条件的元素,并返回一个新的列表。
```lua
function filter(list, func)
local new_list = {}
for _, v in ipairs(list) do
if func(v) then
table.insert(new_list, v)
end
end
return new_list
end
-- 使用示例
local list = {1, 2, 3, 4}
local new_list = filter(list, function(x) return x % 2 == 0 end)
print(table.concat(new_list, ", ")) -- 输出:2, 4
```
### reduce
reduce 函数可以将一个列表中的所有元素通过一个函数进行累加,并返回最终的结果。
```lua
function reduce(list, func, init_value)
local result = init_value or list[1]
local start_index = init_value and 1 or 2
for i = start_index, #list do
result = func(result, list[i])
end
return result
end
-- 使用示例
local list = {1, 2, 3, 4}
local sum = reduce(list, function(x, y) return x + y end)
print(sum) -- 输出:10
```
### any
any 函数可以判断一个列表中是否存在符合条件的元素。
```lua
function any(list, func)
for _, v in