• Defer语句

    Defer语句

    可以使用 defer 语句而不是 try finally 语句。

    当前块中 defer 之后的任何语句都将被视为隐式try块:

    1. proc main =
    2. var f = open("numbers.txt")
    3. defer: close(f)
    4. f.write "abc"
    5. f.write "def"

    被重写为:

    1. proc main =
    2. var f = open("numbers.txt")
    3. try:
    4. f.write "abc"
    5. f.write "def"
    6. finally:
    7. close(f)

    不支持顶级 defer 语句,因为不清楚这样的语句应该引用什么。