Swift cần một quy ước để nói những gì tên của một hàm là, bao gồm không chỉ các tên hàm riêng của mình (trước dấu ngoặc đơn) mà còn những cái tên bên ngoài của các thông số. Quy ước là các tên được theo sau bởi dấu hai chấm. Vì vậy, đây là một khai báo hàm (trong Swift 2.0):
func myFunc(param1 param1:String, param2:String, param3:String) {}
Và đây là tên của hàm:
myFunc(param1:param2:param3:)
Trong cuộc sống thực, tuy nhiên, nó có thể (thực sự có khả năng) mà một hoặc nhiều tham số sẽ không từ hóa bất kỳ tên nào. Vì vậy, chúng tôi cần một trình giữ chỗ cho tên đó. Dấu gạch dưới là trình giữ chỗ - giống như dấu gạch dưới là biểu tượng trong khai báo ngăn chặn sự ngoại suy của tên. Vì vậy, đây là một khai báo hàm (trong Swift 2.0):
func myFunc2(param1:String, _ param2:String, _ param3:String) {}
Và đây là tên của hàm:
myFunc2(_:_:_:)
[Các Swift 2.0 spec là quan trọng ở đây. Trong Swift 2.0, tên thông số đầu tiên luôn là không phải là được mặc định bên ngoài và các tên param khác được mặc định là. Trong Swift 1.2 và trước đó, các quy tắc bên ngoài phụ thuộc vào nơi khai báo xuất hiện, điều này không nhất quán và khó hiểu một cách không cần thiết.]
Worth Reading: Swift 3 đã thực hiện một số thay đổi về cách chức năng/phương pháp tên tham số và nhãn lập luận được sử dụng và được đặt tên. Dưới đây là _underscores trong các chức năng với nhiều sự rõ ràng: http://stackoverflow.com/questions/24437388/whats-the-underscore-representative-of-in-swift-references – Niraj