Introduction
Extensions let you add new features to existing types without changing their original code. This helps keep your code organized and easy to update.
extension TypeName { // new functionality here }
extension Int { func squared() -> Int { return self * self } }
extension String { var reversedString: String { return String(self.reversed()) } }
extension Double: CustomStringConvertible { var description: String { return "Value: \(self)" } }
extension Int { func squared() -> Int { return self * self } } let number = 5 print("\(number) squared is \(number.squared())")
extension in Swift?String type in Swift?extension followed by the type name without parentheses or brackets.extension String { } uses correct syntax. extend String { } uses invalid keyword. extension String() { } adds invalid parentheses. extension String[] { } uses invalid array notation.extension Int {
func squared() -> Int {
return self * self
}
}
let number = 4
print(number.squared())squared() to Int that returns the number multiplied by itself.4.squared() returns 4 * 4 = 16.extension Double {
func half() -> Double {
self / 2
}
}return keyword.isEven to Int using an extension that returns true if the number is even, otherwise false. Which code correctly implements this?var with a getter. extension Int { var isEven: Bool { self % 2 == 0 } } uses correct concise syntax; the func version declares a method, the if version lacks an else branch causing compile error, the division version has wrong logic.extension Int { var isEven: Bool { self % 2 == 0 } } uses concise expression self % 2 == 0 which returns true if even. extension Int { var isEven: Bool { if self % 2 == 0 { return true } } } omits else branch, causing compiler error. extension Int { var isEven: Bool { self / 2 == 0 } } incorrectly uses division instead of modulo.num.isEven(). Incomplete if fails to compile. Division fails for even numbers like 2 (2/2 == 1 != 0).Pass the test and this pattern moves unknown