# {...} (区块)

区块是用大括号括起来的一个或多个语句. 通常与函数定义和控制流语句一起使用.

    {
        语句
    }

## 备注

区块用于将两行或多行语句绑定在一起. 它还可以用来改变 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, 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 Error {
        ...
    } Finally {
        ....
    }

同样地, 语句也可以放在大括号的后面(但不包括 One True Brace 样式的开括号). 例如:

    if (x = 1)
    { MsgBox "这一行出现在左大括号的右边. 只要 IF 语句为真, 它就会执行."
        MsgBox "这是下一行."
    } MsgBox "这一行出现在右大括号的右边. 它无条件地执行."

## 相关

函数定义, 控制流语句, If, Else, Loop 语句, Try, Catch, Finally

## 示例

通过将两个语句 `MsgBox, "test1"` 和 `Sleep, 5` 用大括号括起来, 如果 x 等于 1, If 语句同时执行这两个语句.

    if (x = 1)
    {
        MsgBox "test1"
        Sleep 5
    }
    else
        MsgBox "test2"

dftg