Skip to Content

Hàm (Function) trong Swift

1. Định nghĩa hàm cơ bản

func sayHello() { print("Hello, Swift!") } sayHello() // Gọi hàm

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ề

func sum(a: Int, b: Int) -> Int { return a + b } let result = sum(a: 10, b: 20) print(result) // 30

4. Argument Labels

4.1. External và Internal Parameter Names

func greet(person name: String) { print("Hello, \(name)!") } greet(person: "Alice") // 'person' là external label

4.2. Bỏ External Label với _

func sum(_ a: Int, _ b: Int) -> Int { return a + b } sum(10, 20) // Không cần label

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

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)) // 15

7. In-Out Parameters

func increment(_ value: inout Int) { value += 1 } var count = 5 increment(&count) print(count) // 6

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

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)) // 8

11. Nested Functions

func calculate() -> Int { func add(a: Int, b: Int) -> Int { return a + b } return add(a: 5, b: 3) } print(calculate()) // 8

12. So sánh với Kotlin

SwiftKotlinGhi chú
func name()fun name()Keyword khác
-> Int: IntReturn type
name: Stringname: StringParameters giống
_ name: Stringname: StringNo label
inoutKhông cóPass by reference

📝 Tóm tắt

  • func keyword để định nghĩa
  • -> Type cho return type
  • External và internal parameter names
  • _ để bỏ external label
  • Default parameters
  • Variadic parameters với ...
  • inout cho pass by reference
  • Tuples cho multiple return values
  • Functions là first-class citizens
Last updated on