Hàm (Function) trong Swift
1. Định nghĩa hàm cơ bản
func sayHello() {
print("Hello, Swift!")
}
sayHello() // Gọi hàm2. Hàm với tham số
func greet(name: String) {
print("Hello, \(name)!")
}
greet(name: "Alice")3. Hàm có giá trị trả về
func sum(a: Int, b: Int) -> Int {
return a + b
}
let result = sum(a: 10, b: 20)
print(result) // 304. Argument Labels
4.1. External và Internal Parameter Names
func greet(person name: String) {
print("Hello, \(name)!")
}
greet(person: "Alice") // 'person' là external label4.2. Bỏ External Label với _
func sum(_ a: Int, _ b: Int) -> Int {
return a + b
}
sum(10, 20) // Không cần label5. Default Parameters
func greet(name: String = "Guest", greeting: String = "Hello") {
print("\(greeting), \(name)!")
}
greet() // Hello, Guest!
greet(name: "Alice") // Hello, Alice!
greet(name: "Bob", greeting: "Hi") // Hi, Bob!6. Variadic Parameters
func sum(_ numbers: Int...) -> Int {
var total = 0
for number in numbers {
total += number
}
return total
}
print(sum(1, 2, 3)) // 6
print(sum(1, 2, 3, 4, 5)) // 157. In-Out Parameters
func increment(_ value: inout Int) {
value += 1
}
var count = 5
increment(&count)
print(count) // 68. Multiple Return Values (Tuples)
func minMax(array: [Int]) -> (min: Int, max: Int) {
return (array.min()!, array.max()!)
}
let result = minMax(array: [1, 5, 3, 9, 2])
print("Min: \(result.min), Max: \(result.max)")9. Optional Return Type
func findIndex(of value: Int, in array: [Int]) -> Int? {
for (index, item) in array.enumerated() {
if item == value {
return index
}
}
return nil
}
if let index = findIndex(of: 5, in: [1, 3, 5, 7]) {
print("Found at index: \(index)")
}10. Function Types
func add(a: Int, b: Int) -> Int {
return a + b
}
var mathFunction: (Int, Int) -> Int = add
print(mathFunction(5, 3)) // 811. Nested Functions
func calculate() -> Int {
func add(a: Int, b: Int) -> Int {
return a + b
}
return add(a: 5, b: 3)
}
print(calculate()) // 812. So sánh với Kotlin
| Swift | Kotlin | Ghi chú |
|---|---|---|
func name() | fun name() | Keyword khác |
-> Int | : Int | Return type |
name: String | name: String | Parameters giống |
_ name: String | name: String | No label |
inout | Không có | Pass by reference |
📝 Tóm tắt
funckeyword để định nghĩa-> Typecho return type- External và internal parameter names
_để bỏ external label- Default parameters
- Variadic parameters với
... inoutcho pass by reference- Tuples cho multiple return values
- Functions là first-class citizens
Last updated on
Swift