2015-12-04 13 views
5

bu temel işlevi alın ("zarflama fonksiyonu olarak kendini" anlamında): BuradaSwift fonksiyon kapsamı başvuran öz

func sampleFunction() 
{ 
    print(self) 
} 

self o zarflar bunu sınıf örneğine atıfta ziyade - kudretini olarak Muhtemelen daha mantıklı - işlevi işlevini zarflıyor.

İnsan nasıl saran fonksiyonu ziyade onun zarflama sınıf örneği bir başvuru alır?

İdeal olarak, ben böyle bir şey yapmak için arıyorum:

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

ilginç bir soru! Bunu kendim bilmek istediğimi bile bilmiyordum, ama http://stackoverflow.com/questions/24048430/logging-method-signature-using-swift –

+0

'u bulduğum şey şu anda onun adıyla mevcut olduğunu düşünüyorum. .. '' için baskı (sampleFunction, değer) örneğin 'sampleFunction (2)' çıkış '(Fonksiyon) 2'FC – Alladinian

cevap

4

, sen aksi takdirde sadece sampleFunction kullanmak, baskı açıklamada

print(__FUNCTION__) 

__FUNCTION__ kullanabileceği başka bir argüman olarak.

+0

Tamamlanması için cevabınızdaki belgelere referans olarak bir bağlantı ekleyin. [İşte bağlantı] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID390) –

+0

@ TomaszBąk teşekkürler öneri için –

1

Örnek yöntemleri Swift de curried edilir. Böylece işlevi referans olarak alabilirsiniz. İşte

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

f değeri fonksiyonun adını yazdırmak isterseniz fonksiyon kendisi

+0

sayesinde @mustafa Bunu zaten fark etmedi olacak ve orijinal söz konusu koymak gerekirdi. Aslında, her zaman yazmam gerekmeyecek, “ben” gibi genel, yeniden kullanılabilir bir deyim arıyordum. –