Tham số hàm Swift

Tham số hàm là một giá trị được một hàm chấp nhận.

Trước khi bạn tìm hiểu về các tham số hàm và giá trị trả về, hãy đảm bảo bạn biết về Swift chức năng.

Hãy xem một ví dụ,

func addNumbers(a: Int, b: Int) {
  var sum = a + b
  print("Sum:", sum)
}

addNumbers(a: 2, b: 3)

Output

Sum: 5

Trong ví dụ trên, hàm addNumbers có hai tham số: ab. Lưu ý dòng,

addNumbers(a: 2, b: 3)

Nơi đây, a: 2, b: 3 chỉ định các thông số đó ab sẽ nhận được giá trị 23 tương ứng.

Lưu ý: Các giá trị 23 được truyền trong khi gọi hàm cũng được gọi là đối số.

Tham số chức năng với các giá trị mặc định

Trong Swiftchúng tôi có thể cung cấp các giá trị mặc định cho các tham số của hàm.

Chúng tôi sử dụng = toán tử để cung cấp các giá trị mặc định. Ví dụ,

func addNumbers( a: Int = 7,  b: Int = 8) {
  var sum = a + b
  print("Sum:", sum)
}

// function call with two arguments
addNumbers(a: 2, b: 3)

// function call with one argument
addNumbers(a: 2)

// function call with no arguments
addNumbers

Output

Sum: 5
Sum: 10
Sum: 15

Trong ví dụ trên, hãy chú ý đến định nghĩa hàm

func addNumbers(a: Int = 7, b: Int = 8) {
  ...
}

Ở đây, chúng tôi đã cung cấp các giá trị mặc định 78 cho các tham số a và b tương ứng. Đây là cách chương trình này hoạt động

1. addNumbers(a: 2, b: 3)

Cả hai giá trị đều được chuyển trong quá trình gọi hàm. Do đó, các giá trị này được sử dụng thay vì các giá trị mặc định.

2. addNumbers(a: 2)

Chỉ một giá trị cho tham số a được chuyển trong khi gọi hàm. Vì vậy, giá trị mặc định được sử dụng cho tham số b.

3. addNumbers

Không có giá trị nào được chuyển trong khi gọi hàm. Do đó, giá trị mặc định được sử dụng cho cả hai tham số ab.

Chức năng với nhãn đối số

Trong Swift, chúng ta có thể sử dụng các nhãn đối số để xác định một hàm theo cách diễn đạt và giống như câu. Ví dụ,

func sum(of a: Int, and b: Int) {
  ...
}

Nơi đây, sum có nhãn đối số: of và và.

Trong khi gọi một hàm, chúng ta có thể sử dụng nhãn đối số thay vì tên tham số. Ví dụ,

sum(of: 2, and: 3)

Đây, chúng tôi đang gọi sum giá trị 23 sử dụng nhãn đối số.

Ví dụ: Hàm với Nhãn đối số

func sum(of a: Int, and b: Int) {
  print("Sum:", a + b)
}

sum(of: 2, and: 3)

Output

Sum: 5

Lưu ý: Sẽ có ý nghĩa hơn khi gọi hàm dưới dạng tổng (của: 2, và: 3) của sum(a: 2, b: 3).

Bỏ qua nhãn đối số

Chúng ta cũng có thể bỏ qua nhãn đối số bằng cách viết _ trước tên tham số. Ví dụ,

func sum(_ a: Int, _ b: Int) {
  print("Sum:", a + b)
}

sum(2, 3)

Output

Sum: 5

Lưu ý: Nếu chúng ta sử dụng _ trước tên tham số, sau đó chúng ta có thể gọi hàm mà không có nhãn đối số hoặc tên tham số.

Hàm với các tham số đa dạng

Đôi khi, chúng ta không biết trước số lượng đối số sẽ được truyền vào một hàm. Để xử lý tình huống này, chúng ta có thể sử dụng các tham số khác nhau trong Swift.

Các tham số đa dạng cho phép chúng ta truyền một số giá trị khác nhau trong khi gọi hàm.

Chúng tôi sử dụng ký tự sau tham số của loại lệnh này lệnh này để biểu thị các tham số khác nhau. Ví dụ,

// program to find sum of multiple numbers 

func sum( numbers: Int...) {

  var result = 0
  for num in numbers {
    result = result + num
  }
  
  print("Sum = (result)")
}

// function call with 3 arguments
sum(numbers: 1, 2, 3)

// function call with 2 arguments
sum (numbers: 4, 9)

Output

Sum = 6
Sum = 13

Trong ví dụ trên, chúng ta đã tạo hàm sum chấp nhận các tham số khác nhau. Lưu ý các dòng,

sum(numbers: 1, 2, 3)

sum(numbers: 4, 9)

Ở đây, chúng ta có thể gọi cùng một hàm với các đối số khác nhau.

Lưu ý: Sau khi nhận được nhiều giá trị, numbers hoạt động như một mảng để chúng tôi có thể sử dụng for vòng lặp để truy cập từng giá trị.

Chức năng với tham số inout

Khi chúng ta xác định một tham số hàm, tham số hàm không thể được sửa đổi bên trong thân hàm. Ví dụ,

func changeName(name: String) {
  if name == ""{
    // Cause Error
    name = "Ross"
  }
}

Tại đây, đoạn mã trên sẽ tạo ra lỗi: Error: cannot assign to value: ‘name’ is a ‘let’ constant.Điều này là do tham số hoạt động như một giá trị không đổi.

Để khắc phục điều này, chúng ta cần xác định tham số là một inout. Ví dụ,

func changeName(name: inout String) {
  if name == "Ross" {
      name = "Joey"
  }
}

var userName = "Ross"
print("Before: ", userName)

changeName(name: &userName)

print("After: ", userName)

Output

Before:  Ross
After:  Joey

Trong ví dụ trên, chúng ta đã khai báo một hàm changeName chấp nhận inoutname.

Trong khi gọi một hàm có tham số inout, chúng ta phải sử dụng dấu và (&) trước tên biến được truyền làm đối số.

changeName(name: &userName)

Phía sau, một tham số in-out có giá trị được truyền vào hàm, được hàm sửa đổi và được chuyển trở lại hàm để thay thế giá trị ban đầu. Do đó giá trị được truyền trong lời gọi hàm phải là một biến.

Giá trị trả về của hàm Swift

Một hàm có thể trả về giá trị hoặc không. Nếu chúng ta muốn hàm của chúng ta trả về một số giá trị, chúng ta sử dụng return statementreturn type. Ví dụ,

func addNumbers(a: Int, b: Int) -> Int {
  var sum = a + b
  return sum
}

let result = addNumbers(a: 2, b: 3)

print("Sum:", result)

Output

Sum: 5

Trong ví dụ trên, chúng ta đã tạo một hàm có tên addNumbers. Hàm thêm hai số và trả về sum.

return sum

Giá trị trả về được lưu trữ trong result.

Chức năng trả về nhiều giá trị

Một hàm cũng có thể trả về nhiều giá trị. Ví dụ,

func checkMarks -> (String, Int) {
  ...
  return (message, marks)
}

Đây, câu lệnh trả về returns hai giá trị: messagemarks.

Cũng thế, -> (String, Int) chỉ định kiểu trả về lệnh này lệnh này messagemarks. Và, thứ tự phải giống nhau. Nghĩa là, giá trị trả về đầu tiên phải là một chuỗi và giá trị thứ hai phải là một số nguyên.

Ví dụ: Nhiều giá trị trả lại

func compute(number: Int) -> (Int, Int, Int) {

  var square = number * number

  var cube = square * number
  
  return (number, square, cube)
}

var result = compute(number: 5)

print("Number:", result.0)
print("Square:", result.1)
print("Cube:", result.2)

Output

Number: 5
Square: 25
Cube: 125

Trong ví dụ trên, compute chấp nhận một số và tính bình phương và lập phương của số đó. Lưu ý dòng,

return (number, square, cube)

Ở đây, hàm sẽ trả về số, bình phương của nó và giá trị hình khối cùng một lúc.

Các giá trị trả về được lưu trữ trong kết quả. Nơi đây, result là một bộ lưu trữ nhiều giá trị. Để tìm hiểu thêm, hãy truy cập Swift Tuple.

Để truy cập các giá trị riêng lẻ từ một tuple, chúng tôi sử dụng số chỉ mục. Đó là lý do tại sao result.0 trả lại 5, result.1 trả lại 25results.2 trả lại 125.

Trong bài viết này, chúng tôi đã khám phá Cách sử dụng tham số hàm Swift và giá trị trả về trong các bước đơn giản. Trong trường hợp bạn có bất kỳ câu hỏi nào, xin vui lòng hỏi fixsy.org trong phần bình luận bên dưới.