1:string 转 number :tonumber(string)

2: number 转 string :tostring(number)

3:string API:

Lua中的字符串是不可变值,a = "cocotang"  string.gsub(a,"c","z")  print(a) ----> cocotang

1获得字符串长度:string.len(string)  或者 #string

2拼接2个字符串: string..string     &&    如果是2个number number .. number(空格不然误认为小数点)

3截取字符串,组成新的字符串:string.gsub(a,"cc","zz",index) a字符串中的 cc 由 zz 代替 直到index位置

4查找字符串中的某字符串位置:string.find(a,"coco") 返回2个值 c 的index 与 o的index

4:io.read() 获取控制台输入

5: Table创建一个List(数组)

a={}

1:当key 赋值1-10时,len = 10

2:当key 赋值0-10时,len = 10 (同上)

Lua中通常用 1 来做 Index的初始值  (table.maxn(a))--->返回最大正索引 Index

6:取精度

x = 3.123456 print(x-x%0.001)   ---->3.123

x%1 结果是 x的小数部分 0.123456

x-x%1 结果是 x的整数部分 3

x-x%0.001 结果是 x取小数点后三位

7:运算符

> < == >= <= 同于C#

~= 不等于(C# !=)

Lua中取反 not(空格)   (C# !)

8:运算优先级

基本同于C#,直接用括号显示的表现优先级 容易理解

-x^2  -------> -(x^2)

x^y^z --------->x^(y^z)

9:Table构造式

a = {x = 10 , y = 20} 等价于a ={["x"]=10 ,["y" =20]}  等价于 a = {} a["x"] =10 a["y"] =20  等价于 a = {} a.x= 10 a.y = 20

10:Table里面删除一个变量

a = {} a.x= 10  a.x= nil

11:交换变量(Lua里面有点特别) (多重赋值 调函数时传入的实参多余或者少于形参时,与多重赋值非常相似)

C#中:int a=1;int b=2; 交换: int c = a; a =b; b=c;

Lua中:a = 1 b = 2  交换:a,b = b,a

a,b = 1,2,3 ---->舍弃3

a,b,c = 1,2  ----->c=nil

12:流程控制

1由于Lua不支持Switch语句,所以一连串的if elseif 是很常见的

2循环中用break可以跳出循环

13:Lua中没有 ++ --,并且 +=  -=也没有    如果递增1 a=a+1

14:Lua中的Foreach( Generic for)

1遍历所有k: a = {x=1,y=2,z=3;"one","two","three"}

for k in pairs(a) do

print(k)  ------>  1 2 3 y x z

end

2遍历所有v:

for i , v in pairs(a) do

print(v)  -------> one two three 2 1 3

end

2-2 遍历所有的v

for k in pairs(a) do

print(a[k])  ------>  1 2 3 y x z

end

3遍历数组a的所有值

for i , v in ipairs(a) do

print(v)  ---------> one two three

end

值得注意的是:遍历数组a中的值,ipairs(a) 输出的并不是所有的value,以后慢慢了解

15:逆向Table(反转key value)

a = {x=1, y =2, z =3}

b = {}

for k,v in pairs(a) do

b[v] = k

end

16:break与return

break跳出循环,return跳出方法

注意:但是如果return在if前面  报错

17:方法的调用

a = {}

function a:Test() print("orz") end

第一种调:a:Test()    第二种调:a.Test() 注意第二种隐式的传入了a  --->a.Test(a)

假如 function有一个参数,用第二种调 a.Test(n) 报错,应该---> a.Test(a,n)

18:方法的返回值

function foo1() end 无返回值

function foo2() return 1 end 返回一个值

function foo3() return 1,2 end 返回两个值

x,y = foo3() ----> x =1, y = 2

x = foo3()  ------> x =1 ,  2被丢弃

x,y,z = foo3() ----->x=1,y=2,z=nil

x,y = foo3(),99  ----->x = 1,y = 99

x,y = foo1(),20,30 ---->x = nil , y =20    30被丢弃

注意:Table 可以接受 函数返回的所有值,前提是函数作为table构造式中最后一个参数,如果不是最后一个参数,那么只会取第一个返回值,无返回值则为nil

如果强行让函数返回第一个值,可以用一对小括号 括起来函数 ---> (foo()) 不管foo有几个返回值,都只返回第一个,没有返回nil

特殊内置函数 unpack:它接受一个数组作为参数,并从下标1开始返回该数组的所有元素

例如:print(unpack({1,2,3,4,5,66}))   ----> 1,2,3,4,5,66

19: 算术类元方法

__add()   + 运算对应的元方法
__sub()   
__mul
__div
__mod
__pow
__unm     相反数
__concat  .. 运算对应的元方法

转载于:https://www.cnblogs.com/cocotang/p/5864861.html

Lua初学习 9-12 基础相关推荐

  1. Lua初学习 9-13_04 require moudle

    1:require(用于使用模块) module(用于创建模块) 2:一个包就是一些列的模块 3:当我尝试 a = { fun001 = function() print("func001 ...

  2. Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)

    文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...

  3. Lua快速入门篇(基础概述)(Yanlz+toLua+xLua)

    <Lua热更新> ##<Lua热更新>发布说明: ++++"Lua热更新"开始了,立钻哥哥终于开始此部分的探索了. ++++作为游戏发布迭代的重要技术:Lu ...

  4. Lua与c++交互实战基础篇-夏曹俊-专题视频课程

    Lua与c++交互实战基础篇-10018人已学习 课程介绍         本课程从实战角度讲解了流行的高性能脚本Lua与c++的联合开发,这套方案已经被大量的对性能由要求的系统使用,成为了高性能脚本 ...

  5. 2018年JavaWeb和移动程序员学习的12个框架

    戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 如果2018年还没有决定学什么,那么你来对地方了.在今天的文章中,我将分 ...

  6. 零基础实践深度学习之Python基础

    零基础实践深度学习之Python基础 Python数据结构 数字 字符串 列表 元组 字典 Python面向对象 Python JSON Python异常处理 Python文件操作 常见Linux命令 ...

  7. Python学习day16-模块基础

    <!doctype html>day16 - 博客 Python学习day16-模块基础模块的四种形式import和from-import循环导入模块的搜索路径Python文件的两种用途 ...

  8. 【TensorFlow-windows】学习笔记一——基础理解

    前言 因为Theano已经停止更新了,所以在前面学完Theano搭建RBM,CNN,RNN相关结构以后,还是得选择一个主流框架的,由于我自身的学习最终是向强化学习靠近,可能用到的仿真环境是openai ...

  9. python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象

    Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...

最新文章

  1. linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...
  2. 网站推广的三大基本方式
  3. dmesg与printk命令
  4. 支付巨头Visa宣布计划在巴西将加密货币服务引入传统银行
  5. UIDatePicker的属性与方法
  6. 【C#】:浅谈反射机制 【转】
  7. UbuntuHelp:AptGet/Howto/zh
  8. java实现单链表的增加,删除,查找,打印
  9. 毕业设计之 - 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测
  10. 信创办公--基于WPS的Word最佳实践系列(页眉页脚的设置)
  11. 用计算机控制人造卫星属于,用计算机控制人造卫星属于 为什么人造卫星在高层大气...
  12. 74HC595驱动数码管显示模块使用说明
  13. Swift 声明(Declarations)
  14. (踩坑日记)Win10下安装Ubuntu18.04(包括NIVIDIA驱动安装)+主题美化+设置多cuda切换+通过anaconda下安装tensorflow1.x-gpu以及pytorch-gpu
  15. easyPR车牌识别分析与测试结果
  16. 【18】CSS基础(3)——理解层叠式
  17. 以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。给出队满条件和相应的如对和出队算法。
  18. created与mounted执行顺序
  19. 西南联大数字复原项目获国际论坛奖项 百度AI赋予历史温度
  20. Eclipse搭建scala环境(解决“JDT weaving is currently disabled”)

热门文章

  1. matlab 小波 cdd,[Matlab] 单导联心电数据的小波(包)消噪及压缩
  2. 玩游戏4g计算机的内存不足,玩游戏时出现存储空间不足, 无法完成此操作, 到底是何原因?...
  3. javafx android sdk,JavaFX打包到Android上
  4. curl php 模拟来源_php 使用curl模拟ip和来源进行访问的实现方法
  5. java web 保护_java web项目请求控制及简单漏洞防范
  6. java文本框双击可编辑_java swing 文本域双击变为可编辑
  7. python实现excel筛选功能并输出_python如何实现excel按颜色筛选功能
  8. STARTUPINFO结构
  9. (1-e^(-j5w))/(1-e^(-jw))=e^(-j2w)*sin(5w/2)/sin(w/2)的证明过程
  10. 第十五章 Python和Web