2015-12-04 6 views
5

इस मूल कार्य लें:स्विफ्ट समारोह गुंजाइश - संदर्भित आत्म (मतलब "घेर समारोह के रूप में स्वयं")

func sampleFunction() 
{ 
    print(self) 
} 

यहाँ selfवर्ग उदाहरण कि लिफाफे यह करने के लिए संदर्भित करता है, के बजाय - हो सकता है के रूप में तर्कसंगत रूप से अधिक समझ लें - फ़ंक्शन जो इसे लिफाफा करता है।

एक घेर समारोह बजाय उसकी घेर वर्ग उदाहरण के लिए एक संदर्भ कैसे प्राप्त करता है?

आदर्श रूप में, मैं इस तरह कुछ करने के लिए देख रहा हूँ:

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

दिलचस्प सवाल! मुझे यह भी पता नहीं था कि मैं इसे खुद जानना चाहता हूं, लेकिन यहां मैंने जो पाया वह http://stackoverflow.com/questions/24048430/logging-method-ignature-using-swift –

+0

मेरा मानना ​​है कि यह पहले से ही इसके नाम से उपलब्ध है। .. उदाहरण के लिए 'नमूना समारोह (2)' के लिए प्रिंट (नमूना समारोह, मान) 'आउटपुट '(फंक्शन) 2' – Alladinian

उत्तर

4

आप फ़ंक्शन का नाम प्रिंट करना चाहते हैं, तो आप __FUNCTION__

print(__FUNCTION__) 
अपने प्रिंट बयान में

उपयोग कर सकते हैं, नहीं तो बस sampleFunction का उपयोग करें एक तर्क के रूप में।

+0

इसे पूरा करने के संदर्भ के रूप में आपके उत्तर में दस्तावेज़ में एक लिंक जोड़ें। [यहां लिंक है] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Expressions.html#//apple_ref/doc/uid/TP40014097-CH32-ID390) –

+0

@ TomaszBąk धन्यवाद सुझाव के लिए –

1

उदाहरण तरीकों तेजी में curried कर रहे हैं। तो आप समारोह को संदर्भ के रूप में प्राप्त कर सकते हैं।

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

यहाँ च मूल्य समारोह ही

+0

धन्यवाद @ मुस्ताफा, मुझे पहले से ही एहसास हुआ था, और इसे मूल प्रश्न में रखना चाहिए था। मैं वास्तव में एक सामान्य, पुन: प्रयोज्य वाक्यांश की तरह 'स्वयं' की तलाश में था, कि मुझे हर बार टाइप करने की आवश्यकता नहीं होगी। –

संबंधित मुद्दे