2015-12-04 19 views
5

Đi chức năng cơ bản này:Swift chức năng quy mô - tham khảo tự (có nghĩa là "tự như chức năng bao bọc")

func sampleFunction() 
{ 
    print(self) 
} 

Đây self đề cập đến trường hợp lớp rằng phong bì nó, chứ không phải là - như sức được cho là có ý nghĩa hơn - chức năng bao hàm nó.

Làm thế nào để có được tham chiếu đến hàm phong bì thay vì bao vây phiên bản lớp?

Lý tưởng nhất, tôi đang tìm cách để làm điều gì đó như thế này:

func sampleFunction (value: Int) 
{ 
    print(selfAsEnvelopingSampleFunction, value) 
} 
+0

câu hỏi thú vị! Tôi thậm chí không biết tôi muốn biết điều này bản thân mình, nhưng đây là những gì tôi tìm thấy http://stackoverflow.com/questions/24048430/logging-method-signature-using-swift –

+0

Tôi tin rằng nó đã có sẵn theo tên của nó. .. ví dụ 'print (sampleFunction, value)' cho 'sampleFunction (2)' sẽ xuất '(Function) 2' – Alladinian

Trả lời

4

Nếu bạn muốn in tên của các chức năng, bạn có thể sử dụng __FUNCTION__

print(__FUNCTION__) 

trong bản Tuyên Bố in của bạn, nếu không chỉ cần sử dụng sampleFunction như một đối số.

+0

Thêm liên kết vào tài liệu trong câu trả lời của bạn làm tài liệu tham khảo để hoàn thành. [Đây là liên kết] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID390) –

+0

@ TomaszBąk cảm ơn cho đề nghị –

1

phương pháp sơ thẩm được cà ri trong nhanh chóng. Vì vậy, bạn có thể nhận hàm như tham chiếu.

struct User { 
    func sampleFunc(name: String) { 
     let f = User.sampleFunc(self) 
     print(f, name) 
    } 
} 

Ở đây, giá trị f là hàm tự

+0

nhờ @mustafa, tôi đã nhận ra điều đó, và nên đặt nó vào câu hỏi gốc. Tôi đã thực sự tìm kiếm một cụm từ chung chung, có thể tái sử dụng như 'tự', rằng tôi sẽ không cần phải loại ra mọi lúc. –

Các vấn đề liên quan