Lua语法基础

程序块

Lua执行的每段代码都被称为一个程序块(chunk),一个程序块是一连串的语句或命令。一个程序块可以只包含一条语句,也可以由多条不同语句定义构成。也就是说,程序块可以是任意大小。

Lua通常被作为一种数据描述语言来使用,几兆字节的程序块是很常见的,Lua解释其对于大型程序块处理不会有任何问题。

a = 1
b = a*2
-- 分号可有可无
a = 1;
b = a * 2;
-- 换行可有可无
a=1; b=a*2
a=1 b=a*2

连续的Lua语句之间并不需要分隔符,作为可选可使用分号来分割语句。

x = 10;
y = x * 2;
-- Lua语句间并不需要分隔符
x=10 y=x*2
-- Lua语句间可使用分号分割语句
a = 1; b = a*2

立即执行文件

$ lua
> print("Hello World");
Hello World

$ vim hello.lua
print("Hello World")

$ lua hello.lua
Hello World

计算阶乘的函数,用户输入一个数字,然后打印出结果。

$ vim fact.lua

function fact(n)
    if n==0 then
        return 1
    else
        return n*fact(n-1)
    end
end

-- test
print("enter a number : ")
a = io.read("*number") -- read a number
print(fact(a))

另一种运行程序块的方式是使用函数dofile(),此函数会立即执行一个文件。

$ vim lib.lua
-- file lib.lua
function norm(x,y)
    local n = x^2 + y^2
    return math.sqrt(n)
end

function twice(x)
    return x*2
end

$ lua
> dofile("lib.lua") -- 加载程序库
> n =  norm(3,4)
> print(twice(n))
$ vim script.lua
function norm(x,y)
    return (x^2 + y^2)^0.5
end

function twice(x)
    return 2*x
end

$ lua
Lua 5.3.4  Copyright (C) 1994-2017 Lua.org, PUC-Rio
> dofile("script.lua")
> n = norm(3.4, 1.0)
> print(twice(n))
7.0880180586677

如果要测试一段代码,dofile()函数会比较有用。可同时打开两个窗口,一个文本编辑器用户用于编辑代码文件,另一个命令行窗口运行解释器的交互模式。当编辑完代码并保存后,可以再解释器的交互模式窗口中执行dofile("script.lua")来加载新的代码。这样便可以测试新代码,调用其中的函数并打印运行结果。

词法规范

标识符

Lua中用到的名字也就是标识符,Lua中的标识符可由任意字母、数字、下划线构成,不能以数字打头。

避免使用下划线打头后跟一个或多个大写字母的标识符,Lua将此类标识符保留用作特殊用途。

$ lua
Lua 5.3.4  Copyright (C) 1994-2017 Lua.org, PUC-Rio
> _VERSION
Lua 5.3
  • Lua中“什么是字母”的概念依赖于区域设置(Locale)
  • Lua中标识符对大小写敏感

关键词

Lua中的某些关键词是系统所预留的(保留字),不能作为名字使用。

  • Lua中保留标识符_作为“哑变量(Dummy Variable)”使用
  • Lua中的保留字不能作为标识符
and break do else elseif end false for function if in local nil not or repeat return then true until while

注释

Lua行注释为--,块注释为-[[ ]],常用技巧是将代码放入--[[--]]中间,重启用只需要修改---[[

-- 计算两个数的平方和的根
function norm(x,y)
    return (x^2 + y^2)^0.5
end
--[[
function twice(x)
    return 2*x
end
--]]

全局变量

全局变量(Global Variables)无需声明,仅需将一个值赋给一个全局变量即可创建。

Lua中访问未初始化的变量不会引发错误,访问结果是一个特殊的值nil

$ lua
> print(x)
nil

通常没有必要删除一个全局变量,若要删除某个全局变量,只需将其赋值为nil

$ lua
> x = nil
> print(x)
nil

若变量具有较短的生命周期,应将其声明为局部变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值