Swift - 函数内函数?

Swift - function inside function?

关注post关于IBInspectable / IBDesignable, I am reading the example code的精彩,无法理解函数drawRect如何包含另一个函数。有人可以解释吗?

override func drawRect(rect: CGRect) {

    ....

    func rectForPosition(position: CGPoint, andSize size: CGSize) -> CGRect
    {
       ....     
    }

    ....

}

rectForPosition 是在 drawRect 范围内声明的函数。与变量相同,这意味着 rectForPosition 仅在 drawRect.

内部可见和可用

因为根据 language reference 函数声明包含语句:

func function name(parameters) {
     statements
}

一个语句可以是一个声明:

statement → declaration­

这是一个有效的 Swift 代码。