16542人加入学习
(66人评价)
Lua编程
价格 免费

LUA語言中

字符串的組拼是使用两个点

[展开全文]

luaSciTE学习笔记

c# null = lua nil

c# bool = lua boolean

c# float = lua number

c# string = lua string

c# void = lua function

c# var = lua userdate

c# thread = lua thread

c# [] = lua table

type() 获取值类型

[展开全文]

tab1={} --空表

tab2={key1=100,key2="value"} --有键对应值的表

tab3={"apple","pear","orange","grape"} --无键对应的表

for key val pairs(tab1) do

print(key ..":"..val)

end

 

表的使用方式

调用

tab1.key1="ANYU"

tab1["key1"]="anyu"

print(tab1.key1)

print[tab1["key1"]]

[展开全文]

05.print方法、单行和多行注释

1.print(“hello”)后面的“;”可加可不加。

2.print用来向控制台输出字符。

3.单行注释:--

eg:--print用来向控制台输出字符

4.多行注释:--[[

                   --]]

eg:--[[

print(“hello”)

print(“hello world”)

        --]]

5.多行注释快速编程单行注释,在“--[[  --]]”前加一个--[[  --]]---[[  --]]

 

[展开全文]

boolean类型

boolean nil也当做是false

Lua 把 false和nil 当做假  其他都是真 例如数字10

if else 没有括号

例:

1.if true then

print(true)

end 

2.

 if nil then

print()

else

print()

end

[展开全文]

分段传参,利用主线程和协程合作,

function foo (a)
    print("foo 函数输出", a)
    return coroutine.yield(2 * a) -- 返回  2*a 的值
end

co = coroutine.create(function (a , b)
    print("第一次协同程序执行输出", a, b) -- co-body 1 10
    local r = foo(a + 1)

    print("第二次协同程序执行输出", r)
    local r, s = coroutine.yield(a + b, a - b)  -- a,b的值为第一次调用协同程序时传入

    print("第三次协同程序执行输出", r, s)
    return b, "结束协同程序"                   -- b的值为第二次调用协同程序时传入
end)

print("main", coroutine.resume(co, 1, 10)) -- true, 4
print("--分割线----")
print("main", coroutine.resume(co, "r")) -- true 11 -9
print("---分割线---")
print("main", coroutine.resume(co, "x", "y")) -- true 10 end
print("---分割线---")
print("main", coroutine.resume(co, "x", "y")) -- cannot resume dead coroutine
print("---分割线---")

[展开全文]
丛刚 · 2022-01-20 · 该任务已被删除 0

yield参数作为 resume的返回值

resume的参数作为协程的参数

[展开全文]
脱缰野兽 · 2021-03-28 · 该任务已被删除 0

tabl中的索引从1开始

[展开全文]
一介草民cao · 2021-03-25 · 该任务已被删除 0

简单的输出语句:

print('hello wrold')

结尾分号可加可不加

注释:

1.-- 单行注释

2.--[[ 多行注释]]--

[展开全文]
一介草民cao · 2021-03-24 · 该任务已被删除 0

可变函数中默认的arg数组最后一位是数组长度

lua5.3中取消了默认arg,需要在函数体内自行定义

[展开全文]
花村村花 · 2021-02-15 · 该任务已被删除 0

repeat 循环体

until(条件)

满足条件后跳出循环

[展开全文]
LazyFish · 2021-01-05 · 该任务已被删除 0
  1. a,b=b,a 先计算后赋值,值的互换
  2. 函数的返回值可以是多个
[展开全文]
LazyFish · 2021-01-05 · 该任务已被删除 0

局部变量的生命周期与所咋语句块有关

局部变量可以和全局变量重名

如果出现重名的,优先访问距离最近的

只要变量前面不加local关键字,就是全局变量

[展开全文]
LazyFish · 2021-01-05 · 该任务已被删除 0

数据类型

[展开全文]
小老弟6 · 2020-11-29 · 该任务已被删除 0

 

需要先保存好文件才能运行文件。

[展开全文]
张宇飞 · 2020-11-02 · 该任务已被删除 0

Lua的一些基础常识

1.nil 空,和C#的null类似但又不同
        对于全局变量和table,nil还有删除的作用,给全局变量或table表里的变量赋一个nil值,等同于把他们删掉(同时释放了内存)
        nil作比较时要加上引号“”
2.Lua默认只有number一种数字类型

3.string字符串一旦赋值,就不能被修改,可以通过string.gsub()方法来修改,可以写成单引号,但是建议用双引号
        当两个全是数字的字符串相加,或一个是数字一个是数字字符串时,字符串会进行类型转换,直接相加
        "2" + 1 = "3"  "3" + "2" = "5"
        如果想连接字符串,就使用  ..  符号代替:“a”..“b”="ab"
        #号可以计算字符串长度:(#“www.baidu.com”)= 13
        
4.常见基本语法
        ~= 相当于C#中的 !=
        and,or,not 对应&&,||,!
        局部变量,使用local修饰声明,内存在栈上,在一个函数,代码块{}内,代码块结束,内存自动释放
        全局变量在堆上 ,可以随时创建,程序结束,内存自动释放
        C#:public void test(){}';  Lua: function  test() end
        lua没有大括号{},控制语句都是  then ... end
        lua没有switch结构  print()会默认换行
        只有nil是false,0和1都是true
        
4.table(表)
        table可以有数组形式,字典形式,数组字典同时混合形式
        
5.元表
        元表可以扩展普通表的行为,普通表无法直接加减运算等,但可以用元表扩展各类功能
        当使用getmetatable方法获取普通表的元表时,如果元表中含有(双下划线)__metatable键值,操作会失败,只能获取到对应的值,不能获取其他东西,用此方法可以保护已经写好的元表扩展不能被其他人获取
        
        __index,元表的扩展方法,当访问到一个不存在的索引的时候,调用这个方法,这个方法默认返回nil
        可以直接给__index 赋值一个其他的表,系统会自动寻找这个表有没有对应的值,如果有就返回,没有还是默认的nil
        也可以给__index赋值一个方法,用来进行其他操作,比如直接返回设置好的变量之类的
        
        __newindex:当我们对表的数据进行修改的时候,当我们修改的是一个新的索引的时候,也就是之前没有的索引的时候,自动调用
        当修改的是一个已经存在的数据的话,不会起作用
        (当我们给表添加新的键值对的时候,会调用此方法)
        当__newindex 后面是函数的话,会调用此函数,如果后面跟了一个其他的表,那么会将此键值对赋值给那个表,原来的表没有变化
        
        __add:当对两个表进行相加操作时,会起作用,并执行方法,具体结果和写的方法有关
        
        
        
        
        
        
        

[展开全文]
liuxiaoyang · 2020-09-26 · 该任务已被删除 0

授课教师

SiKi学院老师

课程特色

图文(1)
下载资料(1)
视频(64)