Hàm (Function)
1. Định nghĩa hàm cơ bản
Phần tiêu đề “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ố
Phần tiêu đề “2. Hàm với tham số”func greet(name: String) { print("Hello, \(name)!")}
greet(name: "Alice")3. Hàm có giá trị trả về
Phần tiêu đề “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
Phần tiêu đề “4. Argument Labels”4.1. External và Internal Parameter Names
Phần tiêu đề “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 _
Phần tiêu đề “4.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
Phần tiêu đề “5. 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
Phần tiêu đề “6. Variadic Parameters”func sum(_ numbers: Int...) -> Int { var total = 0 for number in numbers { total += number } return total}
print(sum(1, 2, 3)) // 6print(sum(1, 2, 3, 4, 5)) // 157. In-Out Parameters
Phần tiêu đề “7. In-Out Parameters”func increment(_ value: inout Int) { value += 1}
var count = 5increment(&count)print(count) // 68. Multiple Return Values (Tuples)
Phần tiêu đề “8. 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
Phần tiêu đề “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
Phần tiêu đề “10. Function Types”func add(a: Int, b: Int) -> Int { return a + b}
var mathFunction: (Int, Int) -> Int = addprint(mathFunction(5, 3)) // 811. Nested Functions
Phần tiêu đề “11. 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
Phần tiêu đề “12. 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
Phần tiêu đề “📝 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