块是用大括号括起来的一个或多个语句. 通常与函数定义和控制流语句一起使用.
{ 语句 }
区块用于将两行或多行语句绑定在一起. 它还可以用来改变 Else 语句从属于哪个 If 语句, 例如在此例中, 区块强制 Else 语句从属于第一个 If 语句, 而不是第二个:
if (Var1 = 1) { if (Var2 = "abc") Sleep, 1 } else return
尽管区块可以用在脚本中的任何位置, 不过目前它们仅在与函数定义, If 语句, Else, Loop 语句, Try, Catch 或 Finally 一起使用时才有意义.
如果上面提到的任何控制流语句中仅含单行语句, 那么该语句可以不需要括在区块中(这对于函数定义不适用). 不过, 在某些情况下, 这样做可能会增强脚本的可读性和可维护性.
区块中可以为空(不含任何语句), 当您想注释区块中的内容而不移除区块时这很有用.
One True Brace(OTB, K&R 风格): 在后面这些位置中可以使用 OTB 风格: 函数定义, If (expression), Else, Loop Count, While, For, Try, Catch 和 Finally. 这种风格中区块的开括号与区块的控制语句在同一行, 而不是在其下一行. 例如:
MyFunction(x, y) { ... } if (x < y) { ... } else { ... } Loop %RepeatCount% { ... } While x < y { ... } For k, v in obj { ... } Try { ... } Catch e { ... } Finally { .... }
同样地, 语句可以放在大括号的后面(但不包括 One True Brace 风格的开括号). 例如:
if (x = 1) { MsgBox This line appears to the right of an opening brace. It executes whenever the IF-statement is true. MsgBox This is the next line. } MsgBox This line appears to the right of a closing brace. It executes unconditionally.
函数定义, 控制流语句, If 语句, Else, Loop 语句, Try, Catch, Finally
if (x = 1) { MsgBox, test1 Sleep, 5 } else MsgBox, test2