let a: Int = 28 let b = a as Any let c = b as! Int print(c - 1) // 27 このようにInt型で定義した値を、Any型にキャストし、再度Int型にキャストしたとする。 この時、Int型へのforce castは無事成功し、変数 c は整数型として扱うことが出来る。 一見ありがたい挙動にも見える反面、Any型へのキャストを行った後にも変数 b がInt型としての値の情報を保持していることに関して不思議に思った。 これはSwiftの言語仕様として一体どのような仕組みになっているのだろうか。Swiftという言語において型システム周辺のデータがどのように表現されているのか、そして実行時の型の振る舞いについて、詳しく見てみよう。 SILから見るキャストの挙動 Swiftに詳しい @Kuniwak さんに上記の質問をしたところ「SILを読
![キャストをする時、裏側で何が起こっているのか?【Swift】](https://cdn-ak-scissors.b.st-hatena.com/image/square/3cd92ead98f3e62f47e6b80d9091cf792aab35f2/height=288;version=1;width=512/https%3A%2F%2Fi0.wp.com%2Fit1.jp%2Fwp-content%2Fuploads%2F2020%2F03%2Fbird-1045954_1920.jpg%3Ffit%3D1200%252C798%26ssl%3D1)