【CS.PL】Lua 编程之道: 控制结构 - 进度24%

news2024/11/30 18:53:36

3 初级阶段 —— 控制结构

文章目录

  • 3 初级阶段 —— 控制结构
    • 3.1 条件语句:if、else、elseif
    • 3.2 循环语句:for、while、repeat-until
      • 3.2.1 输出所有的命令行参数
      • 3.2.2 while.lua
      • 3.2.3 repeat.lua及其作用域 🔥
      • 3.2.4 for.lua (For Statement)
      • 3.2.5 泛型for
      • 3.2.6 goto
    • 往期回顾

在这里插入图片描述

3.1 条件语句:if、else、elseif

-- (1)
if true then  
    print(1) -- 1  
end  

-- (2)
if false then  
    print(1)  
else  
    print(0) -- 0  
end  

-- (3)
if false then  
    print(1)  
elseif true then  
    print(2) -- 2  
else  
    print(0)  
end

3.2 循环语句:for、while、repeat-until

3.2.1 输出所有的命令行参数

下标从1开始, 但-1, -2也可以, 没有值就是nil
块分界词 do end
语句不用加分号, 也可以加
#arg就是内置的全局变量

for i = -2, #arg do  
    print(i, arg[i])  
end

output:

# lua args.lua 2 a
-2      nil
-1      lua
0       args.lua
1       2
2       a

3.2.2 while.lua

local cnt = 0  
local i = 1  
while i <= 100 do  
    cnt = cnt + i  
    i = i + 1  
end  
print(cnt) -- 5050

3.2.3 repeat.lua及其作用域 🔥

local cnt = 0  
local i = 1  
repeat  
    cnt = cnt + i  
    i = i + 1  
until i > 100  
print(cnt) -- 5050
local x = 2  
local sqrt = x / 2  
repeat  
    sqrt = (sqrt + x / sqrt) / 2  
    local diff = math.abs(sqrt^2 - x)  
until diff < 0.000001 -- error的作用域包括until后面的语句  
print(sqrt) -- 1.4142135623747

3.2.4 for.lua (For Statement)

More precisely, a for statement like

 for v = _e1_, _e2_, _e3_ do _block_ end

is equivalent to the code 分别为起始, 终止, 步长, e₁, e₂, e₃只执行一次

local cnt = 0  
for i = 100, 1, -1 do -- 100开始, 到1, 每次-1  
    cnt = cnt + i  
end  
print("cnt=", cnt) -- 5050

--[[  
local cnt = 0  
for i = 1, match.huge do -- 死循环  
    cnt = cnt + i
    if cnt > 1000 then
        break
    end
end  
print("cnt=", cnt) -- 5050  
]]  
function f(x)  
    return 5*x  
end  
local num = 1  
for i = 1, f(num) do -- 这个值一旦给定, f(num)只会调用执行一次  
    print("Hello!")  -- 打印f(1) = 5次
    num = 2  
end

3.2.5 泛型for

[[1000.03.CS.PL-Lua#4.1.5 表的实现 —— 迭代器]]

for k, v in pairs(_G) do  -- 全局变量打印
    print(k, v)  
end
--[[output:
...
]]

for k, v in pairs(_G.os) do  
    print(k, v)  -- 
end
--[[output:
exit    function: 0x564a436fccd0
setlocale       function: 0x564a436fd630
date    function: 0x564a436fcbb0
getenv  function: 0x564a436fd540
difftime        function: 0x564a436fcc10
remove  function: 0x564a436fd5a0
time    function: 0x564a436fd690
clock   function: 0x564a436fcb50
tmpname function: 0x564a436fd6f0
rename  function: 0x564a436fd5d0
execute function: 0x564a436fcc70
]]
-- 遍历数组: ipairs后面是一个序列, 不可以是有空洞的数组
local arr = {10, 20, 30, 40, 50}  
for index, value in ipairs(arr) do  
    print("Index:", index, "Value:", value)  
end  
-- 遍历字典(表)  
local dictionary = {name = "Alice", age = 25, city = "Wonderland"}  
for key, value in pairs(dictionary) do  
    print("Key:", key, "Value:", value)  
end  
-- 遍历字符串字符  
local str = "Lua Programming"  
for index, char in ipairs({str:byte(1, #str)}) do  
    print("Index:", index, "Character:", string.char(char))  
end

3.2.6 goto

在 Lua 5.2 及以后的版本中,可以使用 goto 标签来实现在循环中跳过当前迭代并进行下一次迭代,从而达到类似于 continue 的效果。

for i = 1, 10 do
    if i == 5 then
        goto continue
    end
    print("Iteration:", i)
    
    ::continue::
end

往期回顾

  • 【CS.PL】Lua 编程之道: 简介与环境设置 - 进度8%
  • 【CS.PL】Lua 编程之道: 基础语法和数据类型 - 进度16%

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1815199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MMrotate旋转目标框检测(安装说明与踩坑记录)

一、简述 MMRotate 是一款基于 PyTorch 的旋转框检测的开源工具箱&#xff0c;是 OpenMMLab 项目的成员之一。里面包含了rcnn、faster rcnn、r3det等各种旋转目标的检测模型&#xff0c;适合于遥感图像领域的目标检测。 基础知识&#xff1a;什么是旋转目标检测 二、MMRotate…

POSEMANIACS图片库下载

POSEMANIACS - Royalty free 3d pose reference for all artists是一个很不错得姿态库图片网站​&#xff0c;可以用作ControlNet的原始图片。 就是加载速度有点慢。一个个手工点击​查看或下载更是费时费力。 点击图片&#xff0c;可以分析地址为 https://www.posemaniacs.c…

雪球产品可能要远离普通人了

最近有消息说&#xff0c;在年初发生大规模敲入事件后&#xff0c;雪球产品的购买门槛可能从300w提升至1000w。 那么在这个时间&#xff0c;了解一下雪球产品到底是什么&#xff0c;运行原理是什么。 第一种 经典雪球 经典雪球比较容易理解&#xff0c;设定好了固定的敲出条件…

安装Windows版Nessus

安装Windows版Nessus 1.前言2.Nessus安装3.安装具体步骤4.文件版许可证 1.前言 之前有安装过Ubuntu版本的Nessus的&#xff0c;这次使用Windows来安装一下。 安装包获取&#xff1a;公众号回复Nessus_Windows。公众号在文章最下面推广中可以看到。 2.Nessus安装 这里直接使…

使用 C# 学习面向对象编程:第 8 部分

抽象方法 亲爱的读者&#xff0c;本文是 OOP 的第四大支柱&#xff0c;也是最后一大支柱。对于 OOP 初学者来说&#xff0c;这很容易让人困惑。因此&#xff0c;我们用非常简单的语言提供了一个示例。 “抽象用于管理复杂性。无法创建抽象类的对象。抽象类用于继承。” 例如…

11_2、多态性:虚函数

虚函数与抽象类 虚函数概念声明虚析构函数 抽象类纯虚函数抽象类 虚函数 概念 在赋值兼容规则中&#xff0c;基类类型的指针指向派生类对象时&#xff0c;通过此指针只能访问从基类继承来的同名成员。 如果我们希望通过指向派生类对象的基类指针&#xff0c;访问派生类中的同…

淘宝评论数据信息接口

淘宝评论API接口是一种用于获取淘宝用户评论信息的接口&#xff0c;联讯数据可以帮助商家和消费者获取到商品的评价信息&#xff0c;以便更好地了解商品的质量和用户体验。以下是关于淘宝评论API接口的一些内容&#xff1a; 一、接口功能 淘宝评论API接口提供了商品评价信息的…

西格玛 ------ 第18个希腊字母学习

名词解释 在数学中&#xff0c;我们把∑作为求和符号使用&#xff0c;用小写字母σ&#xff0c;表示标准差。 ∑符号表示求和&#xff0c;读音为sigma&#xff0c;英文意思为Sum&#xff0c;Summation&#xff0c;汉语意思为“和”“总和”。 例1 公式使用说明&#xff1a;…

数据资产解决方案一站式资料大全:数据资产从业人员必备,附下载。数据资产解决方案,数据资产平台建设方案,数据资产入表,数据资产入表流程,数据资产评估案例

在数据资产的建设中&#xff0c;各种解决方案、标准规范、顶层设计指南等文档资料是不可或缺的参考资源。拥有一套全面、系统的数据资产解决方案资料库&#xff0c;无疑能够为工作提供极大的便利和支持。 一站式数据资产解决方案大全资源包&#xff0c;包含政策汇编、整体解决…

HR:对不起,我们不考虑gap超过3个月的简历

关于 gap&#xff0c;瑶琴或许能有些发言权&#xff0c;在 23 年的金三银四时段&#xff0c;瑶琴因为各种原因&#xff0c;选择了裸辞。 这也是瑶琴第一次裸辞&#xff0c;还是在大裁员时代&#xff0c;对这段经历感兴趣的朋友可以看这篇文章&#xff1a;2023 裸辞 就业 瑶琴…

OpenAI前联合创始人埃隆·马斯克 (Elon Musk) 撤销对 OpenAI 的诉讼

埃隆马斯克 (Elon Musk) 撤销了对 OpenAI 及其首席执行官萨姆奥尔特曼 (Sam Altman) 的诉讼&#xff0c;指控该公司违反合同&#xff0c;并据称放弃了创造人工智能技术造福人类的使命。据 CNBC 早些时候报道&#xff0c;该案在没有偏见的情况下被驳回&#xff0c;这意味着马斯克…

SAP 使用BAPI更改分配字段ZUONR不生效解决方案

需求&#xff1a; 使用BAPI变更财务凭证上的ZUONR分配字段&#xff0c;正常情况下使用BAPI:FI_DOCUMENT_CHANGE或者FI_ITEMS_MASS_CHANGE都是可以进行变更的&#xff0c;但是项目上要变更的科目类型是KZ&#xff0c;导致这两个BAPI都没办法进行更改&#xff0c;故对此BAPI进行…

电商平台API电商平台数据传输(商品订单店铺数据采集)

API&#xff08;Application Programming Interface&#xff09;是一种用于应用程序之间相互通信和交互的接口。它定义了一组规范和协议&#xff0c;允许软件系统之间传递数据和请求服务。 API的基本概念包括&#xff1a; 1. 接口&#xff1a;API作为接口&#xff0c;提供了一…

自动同步库数据——kettle开发36

kettle中的那些人工智能。 一、kettle的AI能力目录 跨库同步 2.自动开发 3.自动优化 二、AI实例 1、跨库同步 sqlsever表同步至oracle数据库 1.1源库sqlserver 1.2目标库oracle 1.3可视化跨库同步 使用多表复制向导 选择跨库的表&#xff0c;下一步下一步&#xff0c;即可…

ZL-22A足趾容积测量仪(Plus)在药理学研究上的作用不容忽视

简单介绍&#xff1a; 足趾容积测量仪(Plus&#xff09;是用于解热药筛选和鉴定的仪器&#xff0c;是一种通过测量鼠足趾肿胀后的恢复过程来评价药的效价&#xff0c;了解药作用时间和药效规律的仪器。 详情介绍&#xff1a; 1、显示&#xff1a;5寸触摸屏 2、显示分辨率&…

Go API

Go语言提供了大量的标准库&#xff0c;因此 google 公司也为这些标准库提供了相应的API文档&#xff0c;用于告诉开发者如何使用这些标准库&#xff0c;以及标准库包含的方法。官方位置&#xff1a;https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

Permute 3 mac版:一键转换,格式无忧

Permute 3是一款强大而灵活的多媒体格式转换工具&#xff0c;它以其高效、易用和广泛兼容的特性&#xff0c;成为了众多用户处理媒体文件的得力助手。 Permute 3 Mac获取 首先&#xff0c;Permute 3支持广泛的媒体格式&#xff0c;无论是视频、音频还是图片&#xff0c;都能轻…

三篇卫星切换的论文

目录 一、Energy-Aware Satellite Handover based on Deep Reinforcement Learning 1、题目翻译 2、来源 3、内容 二、A Reliable Handover Strategy with Second Satellite Selection in LEO Satellite Networks 1、题目翻译 2、来源 3、内容 三、User Grouping-Based…

HBase中Master初始化错误~

ERROR&#xff1a;org.apache.hadoop.hbase.PleaseHoldException:Master is initializing 1、停止HBase运行 2、启动zookeeper中的zkCli.sh服务 ./zookeeper/bin/zkCli.sh 3、执行完毕显示以下结果,删除habse文件夹 4、重新启动HBase即可。

弹幕逆向signature、a_bogus

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未经许可禁止转载&a…