python可变参数的特点_Lua异于python的一些特性(一)

本文介绍Lua中函数变量作用域、可变参数处理及泛型for循环的使用技巧。展示了如何通过local声明局部变量、利用unpack机制处理不定数量参数,并提供自定义迭代器实现泛型遍历。

1 函数定义中的变量默认为全局变量

与python不同,要想让函数定义中出现的变量为局部变量,需要声明为local。

2 可变参数函数中的一些语法糖

```Lua

function average(...)

result = 0

local arg={...}

for i,v in ipairs(arg) do

result = result + v

end

print("总共传入 " .. #arg .. " 个数")

return result/#arg

end

print("平均值为",average(10,5,3,4,5,6))

```

以上代码执行结果为:

总共传入 6 个数

平均值为 5.5

以上:

1. Lua将函数的参数放在一个叫arg的表中,#arg 表示传入参数的个数;

2. ipair函数可以将arg分解开来,每个元素都是{键,值};

3. `...`可以作为变量一样使用,加上`{...}`就成为表。

如果不使用#arg变量,用普通的写法,就需要写成如下:

```Lua

function average(...)

result = 0

local arg={...}

local s=0

for i,v in ipairs(arg) do

result = result + v

s=i

end

print("总共传入 " .. s .. " 个数")

return result/s

end

print("平均值为",average(10,5,3,4,5,6))

```

其中,s用来接收键,最后一个键就是arg中的元素个数(正好Lua的下标是从1开始的)。

3 比较强调泛型for的作用

```lua

for xx in fun(t)

do

...

...

end

```

上面这个函数“fun”是一个迭代器,在Lua语言中,通常使用“pair”和“ipair”这两个函数,函数的参数通常是一个列表“{XXX}”,例如实例:

```Lua

function fun(table)

for i,v in pairs(table)

do

print('key:'..i..'~'..'value:'..v)

end

end

t={1,2,3,4,5,'a'}

fun(t)

```

上面这样的案例总感觉不能体现“泛型”本质,泛型本质应该是“泛化的类型”,这种编程范式可以使得类的详细定义向后推至实例化时,从而很好地提高类的复用性。上面的例子肯定时不能体现出这种本质的。但是,如果把这个for结构中的“pair(t)”看作可以替换的整体,就可以把它写作自定义用途的“迭代器”,实例:

```Lua

function iterator(table)

local i=0

return

function()

i=i+1

return table[i]

end

end

for v in iterator({1,2,3,4,5,'a'}) do

print(v)

end

```

回头来看,如果不使用上述范式,而使用原始的编程思想实现,则需要:

```Lua

t={1,2,3,4,5,'a'}

i=1

repeat

print(t[i])

i=i+1

until(i>6)

```

但是,“until”中的6该如何得到呢,如果列表是可变长度的呢?这种结构就不适用了,所以这也许就是泛型for的意义之一吧!

【无人机】湍流天气下发动机故障时自动着陆的多级适配研究(Matlab代码实现)内容概要:本文围绕“湍流天气下发动机故障时无人机自动着陆的多级适配研究”展开,提出了种在极端气象条件下应对无人机动力系统突发故障的自动着陆控制策略。通过构建多级适配控制架构,结合鲁棒控制与自适应算法,提升无人机在湍流干扰下的稳定性和安全性,确保其在发动机部分或完全失效情况下仍能实现平稳着陆。研究采用Matlab进行系统建模与仿真验证,涵盖了飞行动力学模型、故障检测机制、姿态控制律设计及着陆轨迹规划等关键环节,重点解决了强扰动环境下的系统不确定性与控制性能退化问题。; 适合人群:具备定飞行器控制、自动控制理论基础,熟悉Matlab仿真工具的研究生、科研人员及从事无人机系统开发的工程师;尤其适合研究无人机容错控制、飞行安全与应急着陆技术的相关从业者。; 使用场景及目标:①研究无人机在突发故障与复杂气象耦合条件下的安全着陆机制;②开发具备高鲁棒性的容错飞控系统;③为无人机适航安全标准提供理论支持与仿真验证手段;④应用于军事侦察、电力巡检、应急救援等高风险作业场景中的自主安全决策系统设计。; 阅读建议:建议读者结合Matlab代码深入理解控制算法的实现细节,重点关注多级控制器的设计逻辑与故障切换策略,同时可通过修改湍流强度、故障模式等参数进行仿真对比,以掌握系统在不同工况下的响应特性与适应能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值