swiftのキャストの言語仕様に関して


`as Int`と`Int()`の違いを教えていただきたいです。

swiftでキャストをする際は`as Hoge`とすると、キャストされるかと思います。  
そして、`Int()`もIntにキャストしてくれる関数との認識です。  
appleの公式ドキュメントを見たり、ぐぐってみましたが、両者の違いがいまいちよくわかっておりません。

以下のキャプチャのコードで、`as Int`と`Int()`でキャストをしてみると、`as Int`のほうだけ、  
エラーが出てしまいます。UInt32をIntにキャストできないというエラーなら、`Int()`でも  
同じエラーが出ていいと思うのですが、出ないということからすると両者の挙動に  
違いがあるのだろうなと考えています。

そもそも、UInt32をIntにキャストできないのも謎で、  
そちらも合わせてご説明いただけると幸いです。  
よろしくお願いします。  
![キャスト](https://i.stack.imgur.com/xiqRq.png)

なお、補足ですが、`arc4random()`はUInt32の戻り値を持っています。




asは「ダウンキャスト」を行います。  
サンプル：（最初のimport Foundationは必要）

[code]

    import Foundation
    
    var myArray: [AnyObject] = ["Tomas", 24, 174.8]
    let name = myArray[0] as String
    let age = myArray[1] as Int
    let height = myArray[2] as Float
    
[/code]

型AnyObjectが、String、Int、Floatに対して継承関係があるから、asでダウンキャストできます。String、Int、Floatの間では、継承関係がないので、asでキャストできません。Int32もおなじ。

もうひとつ。typealiasで作成した型と、元の型の間のキャストも、asで行えます。

[code]

    typealias MyInt = Int
    
    let value: MyInt = 34
    let value2 = value as Int
    let value3: Int = 54
    let value4 = value3 as MyInt
    
[/code]

