作为一门语言,流程控制是其基本组成部分,无一例外的,ELite为您提供了如下要素:
if/else
首先,你完全可以像Java一样使用 if/else语句。
以下是一个简单的示例:
> define x = new Random().nextInt();
> define y = new Random().nextInt();
> if(x<y) print("${x} < ${y}"); \
2) else print("#{x} >= #{y}");
681368199 >= -420398379
>
for循环
和Java相比,ELite中的 for循环更简单一些,即for (x in y),如果想实现Java中常见的 for (int i = 1; i <= 10; i++)这样的循环语句,在ELite中有一种更简略的形式,即 for (i in [1..10]),请回忆一下[1..10]也是一个集合,与其他类型的集合具有一致操作方法。需要提醒的是,上述[1..10]集合在内部实现上并没有真正分配了10个单元的集合,因此不用担心大的区间表达式会占用过多的内存。
> for(define i in [1..10]) print(i); 1 2 3 4 5 6 7 8 9 10 > > > define array = [10, 8..1]; > for(define i in array) print(i); 10 8 6 4 2 > > define list = new ArrayList(); > list.add(1); true > list.add(2); true > for(define i in list) print(i); 1 2
当然,如果你一定要严格按照 Java 中的 for 语法,也是没有问题的:
> for(define i=1; i<=10; i++) print(i); 1 2 3 4 5 6 7 8 9 10>
while循环:
while表达式和Java的while语句类似。使用while时一定要小心必须使while有一个终止条件,否则很容易出现死循环。
> define i = 1;
> define total = 0;
> while( i<=10) { \
2) total = total + i;\
3) i++;\
4) };
> total
55
同时,需要提及的是,在ELite中的循环语句中,可以使用break终止循环,或使用continue回到循环开始。
> for(define i in [1..10]) {\
2) if(i mod 2 == 0) continue;\
3) print(i);\
4) };
1
3
5
7
9
>
> define i = new Random().nextInt();
> while(true){\
2) print(i);\
3) if( i mod 2 == 0) break;\
4) }
-1002104520
>
switch/case
同样,你也可以在ELite中使用 switch/case 语句,其用法和Java语法一致。如下例示之:
> for(define i in [1..10]){\
2) define c = char (Math.random() * 26 + 97);\
3) print(c+":");\
4) switch(c) {\
5) case 'a':\
6) case 'e':\
7) case 'i':\
8) case 'o':\
9) case 'u':\
10) print("vowel");\
11) default: print("consonant");\
12) }\
13) }
z:
consonant
g:
consonant
n:
consonant
r:
consonant
h:
consonant
h:
consonant
k:
consonant
d:
consonant
a:
vowel
r:
consonant
>