1. if
1 var a = 300 3 if (a == 100) { 5 print(100) 7 } else if (a == 200 && true || !(a == 300)) { 9 print(200)11 } elif (a == 300 || true) { 13 print(300)15 } elseif (a == 400) { 17 print(400)19 } else { 21 print(0)23 }
else if(有空格) 和 elif 和 elseif(无空格) 三种写法都可以使用,都当作 else if 使用
if 里面的变量 除了 false和null 其他变量全部可以判断通过,也就是当作true处理, 例如 if(1) if([]) if ({}) 都会判断通过
PS : string类型可以直接使用 > < >= <= 直接比较, 并且操作符号为 && ,或者操作符号为 || , 取反操作使用!
2. for 循环
//基本for循环 for (var i = 0;i < 10; ++i) { print(i) } print("===================") //单纯for循环 初始值,最终值(包含),step(不写默认为1) for (var i = 0, 10) { print(i) } print("===================") for(var i = 0, 10, 2) { print(i) } //上述为简易for循环, 注意,中间是逗号不是分号,这种就相当于 for (var i = 0; i <= 10; i += 1) 这样 //此种简易for循环执行效率比 第一种 要好点, 第一个值声明 i 初始值,第二个值为结尾值(包含此值),第三个值为递增值(如果不写第三个逗号默认为1)
3. foreach 循环
foreach 一般用来循环 array 和 table变量
1 var arr = [100,200,300,400] 2 foreach (var p in pairs(arr)) { 3 print(p.key + " = " + p.value) 4 } 6 foreach (var p in kpairs(arr)) { 8 print("key = " + p)10 }12 foreach (var p in vpairs(arr)) { 14 print("value = " + p)16 }
table 用法跟array一样
foreach 原生支持 pairs(返回键值) kpairs(只返回键) vpairs(只返回值) 三种函数
foreach 内的函数也可以重载 例如
function test(a) { var index = 0 var count = array.count(a) //直到不返回任何值 跳出foreach循环 return function() { if (index < count) { return a[index++] } } } var a = [1,2,3,4] foreach (var p in test(a)) { print(p) }
foreach 是调用的test函数,test函数返回一个函数,然后foreach会每次调用,直到不返回任何值时foreach跳出
4. while 循环
跟其他语言用法一样 while (true) { } , 不支持 do while
5. try catch 抛出异常
function trycatch(arg,th) { try { if (arg) { throw th } print(arg + " hello world ") } catch(e) { print("error : " + th) } print("finished") } trycatch(false) trycatch(true, "ffffffffffffffff")
try catch 可以跳过一些不确定的代码 以 保证后续的代码正常执行
PS:try catch 也可以捕捉c#的异常
6. 变长参数
function test(a,...b) { print(a) print(array.count(b)) foreach (pair in pairs(b)) { print(pair.value) } } test(100,200,300,400)
上述代码中 带有 … 会被解析成 变长函数, b 会保存成 一个脚本的 array 类型,即 上面调用中 a为 100, b 为 [200,300,400]
7. 运算符
脚本支持 所有基础运算 加减乘除等
脚本还支持位运算
var a = 1024L a |= 1L print(a) a ^= 1L print(a) a >>= 1L print(a) a <<= 1L print(a) a &= 1L print(a)
PS : 位运算支持long类型,double类型不行
8. 特殊
脚本中函数可以定义内部变量 例如
function test() { print(a)}test.a = 100test() //上述代码中 test.a = 100 把函数 test 赋值一个 a 变量,然后再 test 函数内部 就可以直接使用 a 变量 var a = 0 if (a == 0) print("true") //if 判断 如果只有一句的话 可以不加大括号,可以优化代码行数 PS : 如果是 if(true) return; 如果if语句里面只有一个return 请在return后面加上 分号; 否则会编译失败