专栏首页在码圈Lua语言-入门语法

Lua语言-入门语法

Lua 程序设计

Lua 是由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于1993年开发的一种轻量、小巧的脚本语言,用标准 C 语言编写,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

官网:http://www.lua.org/

Redis 在 2.6 版本中推出了脚本功能,允许开发者将 Lua 语言编写的脚本传到 Redis 中执行。使用 Lua 脚本的优点有如下几点:

  • 减少网络开销:本来需要多次请求的操作,可以一次请求完成,从而节约网络开销;
  • 原子操作:Redis 会将整个脚本作为一个整体执行,中间不会执行其它命令;
  • 复用:客户端发送的脚本会存储在 Redis 中,从而实现脚本的复用。

IDE

EmmyLua插件

https://github.com/EmmyLua/IntelliJ-EmmyLua

https://emmylua.github.io/zh_CN/

LDT 基于eclipse

https://www.eclipse.org/ldt/

Lua基础语法

参考

http://book.luaer.cn/

hello world

print("hello world!")

保留关键字

and break do else elseif end false for function if in local nil not or repeat return then true until while

注释

-- 两个减号是行注释

--[[

 这是块注释

 这是块注释.

 --]]

变量

数字类型

Lua的数字只有double型,64bits

你可以以如下的方式表示数字

num = 1024

num = 3.0

num = 3.1416

num = 314.16e-2

num = 0.31416E1

num = 0xff

num = 0x56

字符串

可以用单引号,也可以用双引号

也可以使用转义字符‘\n’ (换行), ‘\r’ (回车), ‘\t’ (横向制表), ‘\v’ (纵向制表), ‘\’ (反斜杠), ‘\”‘ (双引号), 以及 ‘\” (单引号)等等

下面的四种方式定义了完全相同的字符串(其中的两个中括号可以用于定义有换行的字符串)

a = 'alo\n123"'

a = "alo\n123\""

a = '\97lo\10\04923"'

a = [[alo

123"]]

空值

C语言中的NULL在Lua中是nil,比如你访问一个没有声明过的变量,就是nil

布尔类型

只有nil和false是 false

数字0,‘’空字符串(’\0’)都是true

作用域

lua中的变量如果没有特殊说明,全是全局变量,那怕是语句块或是函数里。

变量前加local关键字的是局部变量。

控制语句

while循环

local i = 0

local max = 10

while i <= max do

print(i)

i = i +1

end

if-else

local function main()


local age = 140

local sex = 'Male'
 

  if age == 40 and sex =="Male" then
    print(" 男人四十一枝花 ")
  elseif age > 60 and sex ~="Female" then
   
    print("old man without country!")
  elseif age < 20 then
    io.write("too young, too naive!\n")
  
  else
  print("Your age is "..age)
  end

end


-- 调用
main()

for循环

sum = 0

for i = 100, 1, -2 do

	sum = sum + i

end

函数

function myPower(x,y)

  return      y+x

end

power2 = myPower(2,3)

 print(power2)
function newCounter()

   local i = 0
   return function()     -- anonymous function

        i = i + 1

        return i

    end
end

 

c1 = newCounter()

print(c1())  --> 1

print(c1())  --> 2

print(c1())

返回值

name, age,bGay = "yiming", 37, false, "yimingl@hotmail.com"

print(name,age,bGay)
function isMyGirl(name)
 return name == 'xiao6' , name
end

local bol,name = isMyGirl('xiao6')

print(name,bol)

Table

key,value的键值对 类似 map

lucy = {name='xiao6',age=18,height=165.5}

xiao6.age=35

print(xiao6.name,xiao6.age,xiao6.height)

print(xiao6)

数组

arr = {"string", 100, "xiao6",function() print("memeda") return 1 end}

print(arr[4]())

遍历

for k, v in pairs(arr) do

   print(k, v)
end

面向对象

成员函数

person = {name='xiao6',age = 18}

  function  person.eat(food)

    print(person.name .." eating "..food)

  end
person.eat("xxoo")

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 本机IDEA远程调试远端服务器代码

    这里准备了一个简单的springboot的demo来做测试,其中包含一个TestController 来做Debug

    Parker
  • 基于(siger)开发的SpringBoot探针,Java监控服务器信息

    注:sigar是有依赖的,可能部署起来会比较麻烦,有能力的可以换oshi(Arthas底层) oshi没有这么多依赖,部署比较简单一些

    Parker
  • 开源 - Java接口API授权认证与规范

    1.防止未授权的用户,非法获得不该他所能看到的数据 2.数据的安全性,防止被同行或者有心人士,通过接口爬取重要数据 3.防止接口大批量灌水,如果提前设置好T...

    Parker
  • 99%的人都不知道的8个Python神操作

    大家知道 Python 中的信息打印函数 Print,一般我们会使用它打印一些东西,作为一个简单调试。

    华章科技
  • Python 杂记

    这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。

    用户1564362
  • python这些令人惊艳的技能,你能get几个?-学神IT教育

    这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。

    学神IT
  • 这几个冷门但实用的 Python 技巧你知道吗?

    这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。

    Crossin先生
  • Python 奇思淫技

    这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。

    小草AI
  • 别再说学习无趣了,跟你分享这 8 条 Python 奇技淫巧!

    这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。

    小小詹同学
  • 【C++】Class中的属性和方法是如何存储的

    在C++中对于一个Class,它内部的数据和方法到底是如何存储的呢?是将数据和方法都存储到Class的单个对象中呢,还是会将数据和方法分开来存储?如下图所示:

    灰子学技术

扫码关注云+社区

领取腾讯云代金券