What is difference between as? , as! and as in Swift?
What is difference between as? , as! and as in Swift?
In Swift, the as?
, as!
, and as
operators are used for type casting, but they serve different purposes and have distinct behaviors:
as?
(Optional Casting)The as?
operator is used for conditional casting. It attempts to cast an instance to a specified type and returns an optional value. If the cast is successful, the result is an optional containing the value; if it fails, the result is nil
.
Example:
let myVehicle: Any = Car(name: "My Car", brand: "Tesla")
if let myCar = myVehicle as? Car {
print("My car's brand is \(myCar.brand)")
} else {
print("myVehicle is not a Car")
}
In this example, myVehicle
is conditionally cast to Car
. If the cast succeeds, myCar
is non-nil and the brand is printed. If it fails, the else block is executed[2][8].
as!
(Forced Casting)The as!
operator is used for forced casting. It attempts to cast an instance to a specified type and forces the cast to succeed. If the cast fails, it results in a runtime error (crash).
Example:
let myVehicle: Any = Car(name: "My Car", brand: "Tesla")
let myCar = myVehicle as! Car
print("My car's brand is \(myCar.brand)")
In this example, myVehicle
is forcibly cast to Car
. If myVehicle
is not actually a Car
, the program will crash[2][8].
as
(Upcasting)The as
operator is used for upcasting, which is casting to a superclass or protocol type. This type of casting is always safe and does not change the actual type of the instance.
Example:
class Vehicle {
var name: String
init(name: Str...
middle
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào