if cond if cond {} else {} let n = ||{if cond:0 else:1}() for 200 {} // 循环200次(本质上是把200变成一个200次的迭代器) for a: 200 {} // 循环200次并以a作为迭代器过程的值 for!{} // 无限循环 for(a<200) { // 就是while a+=1 } for n:xx {list.push(||{log(n)})} if和for后如果是单语句不是块就会在当前作用域直接执行,包括let和class for后不带块使用break和continue会报错 ## 迭代器 for some: iterable的写法后面必须使用块,1是为了可读,2是为了迭代过程的变量不会污染当前作用域 ## 迭代器安全性 当你为一个变量使用迭代器时,该变量会被直接锁定,迭代过程和**迭代后**都无法修改其内部值. 以上是最基础的约束, 实际使用时你可以直接去迭代一个变量的属性, 并在迭代过程中修改. 或者使用str.lines()迭代器时在迭代过程中修改str, 这些全都是未定义行为, 请为自己的类似代码负责.