hand
_1_34_33
4
返回栏目
1k
2k
1k
2k
1k
1k
2k
2k
2k
2k
2k
2k
3k
3k
2k
2k
2k
1k
2k
2k
2k
2k
2k
2k
2k
2k
1k
1k
1k
2k
1k
1k
2k
1k
2k
2k
2k
2k
2k
2k
2k
1k
2k
2k
2k
2k
2k
3k
2k
2k
6k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
2k
2k
2k
3k
3k
3k
1k
3k
3k
5k
2k
2k
2k
1k
1k
2k
2k
1k
1k
1k
2k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
2k
2k
3k
3k
2k
2k
2k
2k
4k
2k
3k
2k
3k
2k
3k
2k
3k
2k
2k
2k
3k
返回Lua栏目
作者:
贺及楼
成为作者
更新日期:2025-02-27 21:48:01
在 Lua 编程中,高阶函数是一种强大的编程概念,它允许函数接受其他函数作为参数,或者返回一个函数。其中,map
、filter
和 reduce
是三个非常常见且实用的高阶函数,它们能帮助我们更高效地处理数据集合。接下来,我们将深入探讨这三个高阶函数。
map
函数的主要作用是对集合中的每个元素应用一个给定的函数,并返回一个包含所有处理结果的新集合。简单来说,就是对集合中的每个元素进行相同的转换操作。
-- 定义 map 函数
function map(func, list)
local result = {}
for _, value in ipairs(list) do
table.insert(result, func(value))
end
return result
end
-- 示例函数:将元素乘以 2
function double(x)
return x * 2
end
-- 测试数据
local numbers = {1, 2, 3, 4, 5}
-- 使用 map 函数
local doubled_numbers = map(double, numbers)
-- 输出结果
for _, num in ipairs(doubled_numbers) do
print(num)
end
map
函数,它接受两个参数:一个函数 func
和一个列表 list
。map
函数内部,我们创建了一个空表 result
用于存储处理结果。ipairs
遍历列表 list
中的每个元素,将每个元素传递给 func
函数进行处理,并将处理结果插入到 result
表中。result
表。filter
函数用于根据给定的条件过滤集合中的元素,返回一个只包含满足条件元素的新集合。
-- 定义 filter 函数
function filter(func, list)
local result = {}
for _, value in ipairs(list) do
if func(value) then
table.insert(result, value)
end
end
return result
end
-- 示例函数:判断元素是否为偶数
function is_even(x)
return x % 2 == 0
end
-- 测试数据
local numbers = {1, 2, 3, 4, 5}
-- 使用 filter 函数
local even_numbers = filter(is_even, numbers)
-- 输出结果
for _, num in ipairs(even_numbers) do
print(num)
end
filter
函数,它接受一个函数 func
和一个列表 list
作为参数。filter
函数内部,同样创建了一个空表 result
用于存储满足条件的元素。list
中的每个元素,将元素传递给 func
函数进行判断,如果返回 true
,则将该元素插入到 result
表中。result
表。reduce
函数用于将集合中的元素依次合并为一个单一的值。它接受一个二元函数和一个初始值作为参数,从左到右依次对集合中的元素应用该二元函数。
-- 定义 reduce 函数
function reduce(func, list, initial)
local accumulator = initial
for _, value in ipairs(list) do
accumulator = func(accumulator, value)
end
return accumulator
end
-- 示例函数:求和
function add(x, y)
return x + y
end
-- 测试数据
local numbers = {1, 2, 3, 4, 5}
-- 使用 reduce 函数
local sum = reduce(add, numbers, 0)
-- 输出结果
print(sum)
reduce
函数,它接受一个二元函数 func
、一个列表 list
和一个初始值 initial
作为参数。accumulator
变量。list
中的每个元素,将 accumulator
和当前元素传递给 func
函数进行计算,并将结果更新到 accumulator
中。accumulator
。函数名 | 功能 | 示例用途 |
---|---|---|
map | 对集合中的每个元素应用一个函数,返回处理结果的新集合 | 将列表中的每个元素乘以 2 |
filter | 根据条件过滤集合中的元素,返回满足条件的元素组成的新集合 | 筛选出列表中的偶数 |
reduce | 将集合中的元素依次合并为一个单一的值 | 计算列表中所有元素的和 |
通过使用 map
、filter
和 reduce
这三个高阶函数,我们可以更简洁、高效地处理数据集合,提高代码的可读性和可维护性。在实际编程中,合理运用这些高阶函数能让我们的代码更加优雅。
Lua
整章节共127节
快分享给你的小伙伴吧 ~