if文、switch文でas演算子の使い方が変わる?
class BaseClass{}
class AClass : BaseClass{}
class BClass : BaseClass{}
//var b : BaseClass = AClass()
var b : BaseClass = BClass()
if let p = b as? AClass{
print("OK:(type(of:p))")
}else{
print("else")
}
switch b{
case let p as AClass:
print("OK:(type(of:p))")
default:
print("default")
break
}
if文では、as? switch文では、asと記述しますが、何かしっくりきません。
それでいて、if文のpは、Optional型とはならない。
if文も asでもいいのではと思ってしまいます。
たいてい、そこには理由があるのですが、ご指摘お願いします。