Các hàm lồng nhau trong Swift (Có ví dụ)

Trong bài viết này, bạn sẽ tìm hiểu về các hàm lồng nhau trong Swift và cách hoạt động của nó với các ví dụ.

Nếu một hàm tồn tại bên trong phần thân của một hàm khác, nó được gọi là hàm lồng nhau.

Cú pháp của một hàm lồng nhau

 func funcname () (// câu lệnh của hàm bên ngoài func anotherFuncname () (// câu lệnh của hàm bên trong)) 

Ở đây, hàm anotherFuncnamenằm bên trong phần thân của hàm khác funcname.

Cần lưu ý rằng, các hàm bên trong chỉ có thể được gọi và sử dụng bên trong hàm bao (hàm bên ngoài).

Ví dụ 1: Hàm lồng nhau không có giá trị trả về

 func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack") 

Khi bạn chạy chương trình, đầu ra sẽ là:

Xin chào! Jack

Trong chương trình trên, hàm lồng nhau addGreetingAndPrint()đang được gọi từ hàm bao outputMessageByGreeting().

Câu lệnh outputMessageByGreeting("Jack")gọi hàm ngoài. Và câu lệnh addGreetingAndPrint()bên trong hàm bên ngoài gọi phương thức xuất ra Hello! Jack trong bảng điều khiển.

Bạn không thể gọi hàm addGreetingAndPrintbên ngoài hàm outputMessageByGreeting.

Ví dụ 2: Hàm lồng nhau với các tham số và giá trị trả về

Các hàm lồng nhau có thể chứa các hàm với các tham số và giá trị trả về.

 func operate(with symbol:String) -> (Int, Int) -> Int ( func add(num1:Int, num2:Int) -> Int ( return num1 + num2 ) func subtract(num1:Int, num2:Int) -> Int ( return num1 - num2 ) let operation = (symbol == "+") ? add : subtract return operation ) let operation = operate(with: "+") let result = operation(2, 3) print(result) 

Khi bạn chạy chương trình, đầu ra sẽ là:

 5

Trong chương trình trên,

  • hàm bên ngoài là operate(), với giá trị trả về kiểu Hàm (Int,Int) -> Int.
  • và các hàm bên trong (lồng nhau) là add()subtract().

Hàm lồng nhau add()subtract()theo một cách nào đó đang được sử dụng bên ngoài hàm bao quanh operate(). Điều này có thể thực hiện được vì hàm bên ngoài trả về một trong các hàm này.

Chúng tôi đã sử dụng hàm bên trong bên ngoài hàm bao quanh operate()như operation(2, 3). Chương trình gọi nội bộ add(2, 3)kết quả đầu ra 5 trong bảng điều khiển.

thú vị bài viết...