001 线性查找

文章目录

迭代器

lua 复制代码
-- 定义一个名为 linearSearch 的函数,它接受两个参数:data(一个数组)和 target(一个目标值)  
function linearSearch(data, target)  
    -- 使用 for 循环遍历数组 data,ipairs 是一个迭代器,用于在数组中遍历键值对  
    for i, v in ipairs(data) do  
        -- 如果当前遍历到的值 v 等于目标值 target  
        if v == target then  
            -- 找到目标值,返回其索引 i  
            return i  
        end  
    end  
    -- 如果循环结束都没有找到目标值,返回 -1  
    return -1  
end  
  
-- 定义一个数组 data,包含一系列整数  
data = {13, 66, 54, 73, 23, 55, 18}  
-- 定义一个变量 target,赋值为 66  
target = 66  
  
-- 调用 linearSearch 函数,并将结果赋值给变量 res  
res = linearSearch(data, target)  
-- 打印变量 res 的值  
print(res)

Lua 脚本语法的关键点:

函数定义:

function 关键字用于定义函数。

函数名后面跟着括号,括号内是函数的参数列表。

函数体跟在参数列表之后,用 end 关键字结束。

for 循环:

Lua 中的 for 循环可以配合迭代器使用,例如 ipairs 用于遍历数组的索引和值。

for i, v in ipairs(data) do 表示对数组 data 进行遍历,i 是索引,v 是对应的值。

条件语句:

if 语句用于进行条件判断。

如果条件为真(true),则执行 then 后面的代码块。

可以使用 else 和 elseif 来处理其他情况。

return 语句:

用于从函数中返回值。

如果函数中没有 return 语句,或者 return 后面没有跟任何值,则默认返回 nil。

数组和变量:

Lua 中的数组使用花括号 {} 定义,数组元素之间用逗号分隔。

变量不需要提前声明,直接使用赋值语句即可创建和初始化。

打印输出:

使用 print 函数来打印输出变量的值或者文本信息。

主程序

lua 复制代码
function linearSearch(data, target)  
    for i = 1, #data do  -- 这是一个for循环,用于遍历数组data。#data获取数组data的长度。Lua中的数组索引从1开始,所以循环变量i从1开始,到数组的长度结束。
        if data[i] == target then  
            return i 
        end  
    end  
    return -1  
end  
  
-- Main program  
do  
    local data = {13, 66, 54, 73, 23, 55, 18}  
    local target = 66  
  
    local res = linearSearch(data, target)  
    print(res)  
end

Lua 数组的索引是从1开始的,也就是说它们的索引从1开始计数。

Lua我们定义了一个全局函数linearSearch来执行搜索。

在Lua中,我们使用一个匿名的do ... end块来包含主程序逻辑。这个块在脚本运行时会被立即执行。

在Lua中,局部变量是使用local关键字声明的。这有助于避免污染全局命名空间。

Lua中的print函数用于输出结果

相关推荐
努力努力再努力wz11 小时前
【Lua入门系列】从动态类型到变量作用域:彻底理解 local、全局变量与跨文件访问
开发语言·junit·lua
买房动力十足1 天前
秒杀商城 + AI 运营:Lua 防超卖、MQ 削峰,AI 负责选品和策划
开发语言·人工智能·lua
一条泥憨鱼5 天前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
一条泥憨鱼6 天前
【Redis | 黑马点评】分布式锁;Lua脚本;Redisson与看门狗 |源码万字详解
redis·分布式·lua
笨鸟先飞的橘猫9 天前
skynet热更新实现问题与排错记录
学习·lua·skynet
开开心心_Every12 天前
黄金价格软件国内外价格实时监控超方便
运维·服务器·游戏·智能手机·pdf·lua·perl
笨鸟先飞的橘猫14 天前
C 扩展开发指南:从 Lua 到 skynet 的完整链路
c语言·lua
贾宝玉的玉宝贾15 天前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
二喵❥(^_-)20 天前
接口测试流程的三个核心环节
开发语言·lua