Lua初学习 9-12 基础
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 基础相关推荐
- Lua初学习 9-13_04 require moudle
1:require(用于使用模块) module(用于创建模块) 2:一个包就是一些列的模块 3:当我尝试 a = { fun001 = function() print("func001 ...
- Python|并发编程|爬虫|单线程|多线程|异步I/O|360图片|Selenium及JavaScript|Scrapy框架|BOM 和 DOM 操作简介|语言基础50课:学习(12)
文章目录 系列目录 原项目地址 第37课:并发编程在爬虫中的应用 单线程版本 多线程版本 异步I/O版本 总结 第38课:抓取网页动态内容 Selenium 介绍 使用Selenium 加载页面 查找 ...
- Lua快速入门篇(基础概述)(Yanlz+toLua+xLua)
<Lua热更新> ##<Lua热更新>发布说明: ++++"Lua热更新"开始了,立钻哥哥终于开始此部分的探索了. ++++作为游戏发布迭代的重要技术:Lu ...
- Lua与c++交互实战基础篇-夏曹俊-专题视频课程
Lua与c++交互实战基础篇-10018人已学习 课程介绍 本课程从实战角度讲解了流行的高性能脚本Lua与c++的联合开发,这套方案已经被大量的对性能由要求的系统使用,成为了高性能脚本 ...
- 2018年JavaWeb和移动程序员学习的12个框架
戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 如果2018年还没有决定学什么,那么你来对地方了.在今天的文章中,我将分 ...
- 零基础实践深度学习之Python基础
零基础实践深度学习之Python基础 Python数据结构 数字 字符串 列表 元组 字典 Python面向对象 Python JSON Python异常处理 Python文件操作 常见Linux命令 ...
- Python学习day16-模块基础
<!doctype html>day16 - 博客 Python学习day16-模块基础模块的四种形式import和from-import循环导入模块的搜索路径Python文件的两种用途 ...
- 【TensorFlow-windows】学习笔记一——基础理解
前言 因为Theano已经停止更新了,所以在前面学完Theano搭建RBM,CNN,RNN相关结构以后,还是得选择一个主流框架的,由于我自身的学习最终是向强化学习靠近,可能用到的仿真环境是openai ...
- python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象
Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...
最新文章
- linux远程桌面复制文件,SH,telnet,网络拷贝文件,putty,连接windows远程桌面终端,远程控制linux桌面...
- 网站推广的三大基本方式
- dmesg与printk命令
- 支付巨头Visa宣布计划在巴西将加密货币服务引入传统银行
- UIDatePicker的属性与方法
- 【C#】:浅谈反射机制 【转】
- UbuntuHelp:AptGet/Howto/zh
- java实现单链表的增加,删除,查找,打印
- 毕业设计之 - 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测
- 信创办公--基于WPS的Word最佳实践系列(页眉页脚的设置)
- 用计算机控制人造卫星属于,用计算机控制人造卫星属于 为什么人造卫星在高层大气...
- 74HC595驱动数码管显示模块使用说明
- Swift 声明(Declarations)
- (踩坑日记)Win10下安装Ubuntu18.04(包括NIVIDIA驱动安装)+主题美化+设置多cuda切换+通过anaconda下安装tensorflow1.x-gpu以及pytorch-gpu
- easyPR车牌识别分析与测试结果
- 【18】CSS基础(3)——理解层叠式
- 以域变量rear和length分别指示循环队列中队尾元素的位置和内含元素的个数。给出队满条件和相应的如对和出队算法。
- created与mounted执行顺序
- 西南联大数字复原项目获国际论坛奖项 百度AI赋予历史温度
- Eclipse搭建scala环境(解决“JDT weaving is currently disabled”)
热门文章
- matlab 小波 cdd,[Matlab] 单导联心电数据的小波(包)消噪及压缩
- 玩游戏4g计算机的内存不足,玩游戏时出现存储空间不足, 无法完成此操作, 到底是何原因?...
- javafx android sdk,JavaFX打包到Android上
- curl php 模拟来源_php 使用curl模拟ip和来源进行访问的实现方法
- java web 保护_java web项目请求控制及简单漏洞防范
- java文本框双击可编辑_java swing 文本域双击变为可编辑
- python实现excel筛选功能并输出_python如何实现excel按颜色筛选功能
- STARTUPINFO结构
- (1-e^(-j5w))/(1-e^(-jw))=e^(-j2w)*sin(5w/2)/sin(w/2)的证明过程
- 第十五章 Python和Web