V-REP教程(三)Lua

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
菜鸟教程在线编辑窗口:http://www.runoob.com/try/runcode.php?filename=HelloWorld&type=lua

词法和语法约定

1.区分大小写 Apple和apple不同 标识符采用字母数字下划线并且不以字母开头,一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
2.keywords和语法:
and or not 与或非运算;
true false 真假;
nili Flag = nil - -Flag为空,表示将该变量删除了;
//全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。

print(b)
>nil

for end
数值for循环

function f(x)  
    print("function")  
    return x*2   
end  
for i=1,f(5) do print(i)  
end
--result:
function
1
2
3
4
5
6
7
8
9
10
--or的三个表达式在循环开始前一次性求值,以后不再进行求值。
--比如上面的f(x)只会在循环开始前执行一次,
--其结果用在后面的循环中。

泛型循环:

days = {"Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday"}  
for i,v in ipairs(days) do  print(i) print(v) end 
--1
Sunday
2
Monday
3
Tuesday
4
Wednesday
5
Thursday
6
Friday
7
Saturday 

while do end

while(condition)
do
   statements
end

repeat until

repeat
   statements
until( condition )

嵌套

j =2
for i=2,10 do
   for j=2,(i/j) , 2 do
      if(not(i%j)) 
      then
         break 
      end
      if(j > (i/j))then
         print("i 的值为:",i)
      end
   end
end

break 退出循环
if then end /if then elseif then end

--[ 定义变量 --]
a = 10;

--[ 使用 if 语句 --]
if( a < 20 )
then
   --[ if 条件为 true 时打印以下信息 --]
   print("a 小于 20" )
end
print("a 的值为:", a)

function

function maximum (a)
    local mi = 1             -- 最大值索引
    local m = a[mi]          -- 最大值
    for i,val in ipairs(a) do
       if val > m then
           mi = i
           m = val
       end
    end
    return m, mi
end

print(maximum({8,10,23,12,5}))--多返回值
结果:23    3

和 C 语言类似,在函数参数列表中使用三点 表示函数有可变的参数

do  
    function foo(...)  
        for i = 1, select('#', ...) do  -->获取参数总数
            local arg = select(i, ...); -->读取参数
            print("arg", arg);  
        end  
    end  

    foo(1, 2, 3, 4);  
end

3.数据类型
lua是动态语言,不用声明变量类型;
nilboolean包含false和true,number是数字类型lua 默认只有一种 number 类型 – double(双精度)类型,string 字符串类型 “”/”声明,[[]]表示长串,function 地位和int long是一样的,可以作为参数,可以匿名,userdata 自定义数据类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用,thread用于执行协同程序的独立执行线程,线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。table 关联数组,和c++中的map类似,数组的索引可以是数字或者是字符串,下标从1开始。
4.变量
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束,变量的默认值均为 nil。 local d = 6
5.赋值语句:
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略

x, y = y, x                     -- swap 'x' for 'y'

6.table 索引

t[i]
t.i                 -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个
类似这样的函数调用

6.运算符
不等于 ~=
乘幂 ^
计算长度 # 相当于sizeof()stringLength=#'hello world'
连接.. a=' hello'
b=' world'
c=a..b -- c contains 'hello world'

你可能感兴趣的:(机器人三维建模及仿真)