《Cocos2d-x之Lua核心编程》读书笔记:Lua基础

《Cocos2d-x之Lua核心编程》读书笔记:Lua基础,第1张

概述Lua编程 三类用户 需要一门简单的脚步语言嵌入到应用程序中的开发者 想要提高c/c++语言开发者 想要提高运行效率的脚步开发者 特点 易嵌入,可以方便的与c/c++编写的游戏逻辑互相调用 简单,不涉及任何复杂的编程概念,麻雀虽小五脏俱全 轻量,库体积很小,只有几百字节 易学习,游戏策划也能使用 高性能,对比c/c++其带来的性能损失可以忽略不计 Lua语法 命名规范 这个与C语言基本一样。 类型 Lua编程 三类用户 需要一门简单的脚步语言嵌入到应用程序中的开发者 想要提高c/c++语言开发者 想要提高运行效率的脚步开发者 特点 易嵌入,可以方便的与c/c++编写的游戏逻辑互相调用 简单,不涉及任何复杂的编程概念,麻雀虽小五脏俱全 轻量,库体积很小,只有几百字节 易学习,游戏策划也能使用 高性能,对比c/c++其带来的性能损失可以忽略不计 Lua语法 命名规范

这个与C语言基本一样。

类型与值

8中基础类型:
- nil—–空
- boolean——布尔
- number—-数字
- string—-字符串
- function—-函数
- table—-表
- userdata—-自定义数据类型
- thread—–线程

code

--luafunction show_type(var) print(type(var)) end show_type(var) var = 10 show_type(var) var = "Hello world" show_type(var) var = print show_type(var) var = {} show_type(var)
nil

nil表示一种类型,它只包含一个值nil。任何变量在未赋值前都是nil。当给一个全局变量赋值nil的时候,表示删除该变量。

boolean

boolean有两个值true和false.在lua中只有false和nil表示假,其他情况都为真,数字0也是真。

code

var = nilif var then    print ("var is true")else    print("var is false")end
number

number类型表示实数,不论是浮点数还是整型数都是number类型。
code

a = 10--整型b = 50.2--浮点数c = 5e20--科学计数法
string

Lua中字符串表示一个字符序列。里面可以包含任意的字符,包括数字0(c/c++中的字符串终止字符),并且Lua中字符串的长度是没有限制的,即可以是空字符也可以是整本数,Lua对字符串的处理是很快的。

code

str = "I'm a string."--单行字符串long_str = [[ I'm a "long",string. ]]--多行字符串print (str)print (long_str)--".."是字符串连接符str = "I'm ".."a".." string"print (str)str1 = "I'm"str2 = " a string"print(str1..str2)--"#"能得到字符串的长度print (#str1)print (#str2)print (#str)
table

Lua中的table类似C++中的map,但是,比map更简单。

code

t = {a = "test1",b = "test2"}
表达式 算术运算符

算术运算符有:+(加),-(减),(乘),/(除),^(指数),%(取模),-(负号)*

code

a = 3b = 5print (a + b)print (a - b)print (a * b)print (a / b)print (a ^ b)print (a % b)print (-a)
关系运算符

关系运算符:<(小于),>(大于),<=(小于等于),>=(大于等于),~=(不等于),==(等于)

对于table,userdata,function,Lua中是以他们的引用来做比较,只有当他们指向同一个对象的时候才是相等的。

逻辑运算符

逻辑运算符有:and(与),or(或),not(非)
if not x then x = v end可以简写为x = x or v

@H_869_301@字符串连接符

这个上面已经说过了,这里就不多说了。

*** 作符的优先级 table 构造式

默认的计数从1开始
code

t = {}--创建一个空的tablea = {x = 10,y = 20}t = {"Sunday","Monday","Tuesday","Wednesday","Thursday","FrIDay","Staturday"}t = {    name="美女",age = 18,"美女背后的男人1","美女背后的男人2",}t = {}t.name = "美女"t.age = 18t[1] = "美女背后的男人1"t[2] = "美女背后的男人2"b = {["x"] = 10,["y"] = 20,1,2,3,4}--删除table中的一个元素b[1] = nil--删除tableb = nil
语句 赋值语句

关于赋值,lua里面比较有意思。

code

a = 10--正常的赋值a,b = 10,20--相当于a = 10,b = 20a,b = b,a--交换a,b的值,这个好简单--函数返回多个值function someValue()  local a,20  return a,breturn
局部变量与块

lua中的变量也有局部变量和全局变量之分,默认定义的变量都是全局变量,定义局部变量需要添加local
code

i = 10--全局变量local j = i--局部变量--代码块if true then--do end包围的为代码块    do        local a = 20        print (a)    endend
控制语句 条件语句和循环
--条件判断if a > b thenelse if a > c thenend--while循环while a < 5 do  a = a + 1--lua中没有a += 1这种语法end--repeat..until循环,类似do--whilelocal i = 0repeat  i = i + 1  print(i..",")until > 3--for循环for var = from,end,step doendfor i = 0,10,1 do  print(i)end--for泛型t = {"Sunday","Staturday"}for k,v in pairs(t) do  print(k,v)end
函数 函数定义
function func()endfunc = function() end--定义对象的方法--":"定义的函数会自动传入一个self(相当于this),"."定义的没有self传入class = {}function class.func1()endfunction class:func2()end
函数参数与返回值

Lua中函数的参数可以有任意多个,当给函数传递的参数超过函数定义的形参个数时,多余的参数会被舍弃,如果少,缺少的默认值为nil.

Lua中函数返回多个参数是,所赋值的表达式不是最后的一个元素,那么函数只返回一个值用来赋值给变量.

code

function foo()  return 30,50endx,y = foo(),20 --x = 30,y = 20

_return返回一个函数的返回值,需要注意的死return f()这样的语句会把f()返回的所有值都返回,return (f())只能返回一个结果。
unpack:接受一个数组作为参数,并从下标1开始返回该数组的所有元素。

print(unpack{10,20,30})a,b = unpack{10,30}--a = 10,b = 20,30被舍弃a = {"hello","ll"}string.find(a)
可变参数

code

function add(...)  local s = 0  for i,v in ipairs{...} do    s = s + v  end  return send
闭包函数

自己关于闭包的理解

code

function newCounter()  local i = 0  reutn function()     i = i + 1     return i     endendc1 = newCounter()--1c2 = newCounter()--2
总结

以上是内存溢出为你收集整理的《Cocos2d-x之Lua核心编程》读书笔记:Lua基础全部内容,希望文章能够帮你解决《Cocos2d-x之Lua核心编程》读书笔记:Lua基础所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1077160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存