|
前几天无意中发现Galaxy脚本可以支持for循环了。(并不是触发器的for循环而是脚本的,触发器的for其实以前一直是用while循环假冒的,因为以前Galaxy里只有while这一种循环)
不过我不确定它是哪个版本的加入的功能,反正自由之翼刚发布时肯定没有。所以也许是2.0.11加入的,也许是更早的自由之翼某个版本加入的。
我在2010年3月写的《目前已知的Galaxy和C的区别》这个教程里,第“16”条原本是“不支持for循环,只能用while循环”。
http://bbs.islga.org/read-htm-tid-38654-page-1-fpage-1.html
但是现在for循环已经加入到galaxy的语法中,所以就顺便提一下。我想C语言的for循环大家应该都会用,不过galaxy由于有一些特殊规则(见上面的链接),所以这里特别解说一下galaxy的for循环的用法。
以下是一条最标准的galaxy的for循环语句:
- int i;
- for(i=0;i<3;i+=1){
- //这里填任意的循环体内容。比如输出i的内容什么的
- }
复制代码
你可能注意到了,和c语言标准的for(int i=0;i<3;i++)相比:
由于该文第2条的规定,Galaxy的局部变量必须声明在函数顶部。因此循环变量(假如是局部变量的话)无法在for的参数中声明,必须函数顶部声明,for的第一个参数只能用于给循环作初值化或省略。
由于该文第5条的规定,Galaxy不支持++操作和--操作。因此i++必须用i+=1来表示。当然循环变量的步长并不仅限于1,可以是任何值,整个循环条件也可以是任何返回类型可以进行bool判断的表达式。
由于该文第18条的规定,循环体就算只有一行也不允许省略大括号。所以{}不能忘记加。
在看完最标准的for循环后,我们来看看最简单的版本。
以下是最简单的一条galaxy的for循环语句:
没错,for的三个参数都可以省略。不过这会导致循环无法自动退出,除非你在循环体内用break;手动退出否则它会一直循环下去直到到达Galaxy的单个周期函数执行语句的硬上限(大概是五千多万次)。
你可以任意省略for的任意参数,因此如果你在给前面已经给循环变量赋过初值了,在这里你也可以省略它。
- int i=0
- for(;i<=7;i*=3){
- ...
- }
复制代码
此外任何省略组合都有效,比如for(;;i-=3){...},for(x=1;z==0;){...},for(;y!=0;){...}之类的,不过如果省掉了循环条件,那么记得记得在循环体内手动用break;语句来退出。
关于Galaxy的更多学习资料。可以看这两份帖子:
通过这个帖子来了解Galaxy和C的区别
http://bbs.islga.org/read-htm-tid-38654-page-1-fpage-1.html
通过这个帖子来学习“引用”功能
http://bbs.islga.org/read-htm-tid-1034938-page-1-fpage-1.html
|
|