मैं एयरस्पेड वेग से सहमत हूं कि आपको यहां अधिभार का उपयोग करना चाहिए, लेकिन मैं उन्हें अलग-अलग बना दूंगा। विकल्पों को पूरी तरह से छुटकारा पाएं।
func someMethod(#arg1: Sometype)-> Void {}
func someMethod(#arg2: Sometype)-> Void {}
func someMethod(#arg1: Sometype, #arg2: Sometype) -> Void {}
जो बिंदु पर, यह स्पष्ट है कि इन वास्तव में अलग अलग तरीके हैं होना चाहिए:
func someMethodWithArg1(arg1: Sometype)-> Void {}
func someMethodWithArg2(arg2: Sometype)-> Void {}
func someMethod(#arg1: Sometype, #arg2: Sometype) -> Void {}
इस ठोस बनाने के लिए, पर विचार अगर हम एक FixedLengthString
वर्ग है कि आप एक लंबाई करने के लिए दे सकते हैं बना रहे थे, या एक मौजूदा स्ट्रिंग, या आप दोनों पास कर सकते हैं और यह लंबाई भरने तक स्ट्रिंग दोहराएगा।
आप का वर्णन होगा क्या कर रहे हैं:
func makeString(length: Int?, string: String?) -> FixedString
बल्कि उसके अलावा, बस तरीकों बनाने:
func makeStringWithLength(length: Int) -> FixedString
func makeStringFromString(string: String) -> FixedString
func makeStringByFillingWith(string: String, totalLength: Int) -> FixedString
यह यह स्पष्ट कैसे सब कुछ काम करता है बनाता है, और आप कॉल नहीं कर सकते यह गलत है। ओबीजेसी में आपको यह भी करना चाहिए।
स्रोत
2015-04-07 15:28:36
दूंगा, मुझे लगता है कि यह सबसे अधिक समझ में आता है और स्पष्ट मंजूरी देता है, धन्यवाद – bolnad