下記関数のSwitch文について、質問させて下さい。

func f1(obj: AnyObject) -> AnyObject {
    switch obj {
    case let arr as NSArray:
        return arr
    case let dic as NSDictionary:
        return dic
    default:
        return obj
    }
}

引数のobjに配列を入れれば、

case let arr as NSArray:
    return arr

が実行され、
連想配列を入れれば、

case let dic as NSDictionary:
    return dic

が実行されます。

objが配列、連想配列のいずかにcastできればtrueが返ってきて、分岐されるのだと思うのですが、
「case let arr as NSArray:」の表記方法は何かの略なのでしょうか?
Optional Bindingの一種?

理解はできるのですが、これがどういった機能を使用しているのかがわからないですので教えて下さい。
参考になるサイトがあれば、それも教えて頂ければありがたいです。

よろしくお願いします。