मैं नई Apple स्विफ्ट भाषा के साथ कुछ जानने की कोशिश कर रहा हूं। मान लीजिए कि मैं ऑब्जेक्टिव-सी में निम्नलिखित की तरह कुछ करता था। मेरे पास readonly
गुण हैं, और वे व्यक्तिगत रूप से नहीं बदले जा सकते हैं। हालांकि, एक विशिष्ट विधि का उपयोग करके, गुणों को तार्किक तरीके से बदल दिया जाता है।
मैं निम्नलिखित उदाहरण लेता हूं, एक बहुत ही सरल घड़ी। मैं इसे Objective-C में लिखूंगा।
@interface Clock : NSObject
@property (readonly) NSUInteger hours;
@property (readonly) NSUInteger minutes;
@property (readonly) NSUInteger seconds;
- (void)incrementSeconds;
@end
@implementation Clock
- (void)incrementSeconds {
_seconds++;
if (_seconds == 60) {
_seconds = 0;
_minutes++;
if (_minutes == 60) {
_minutes = 0;
_hours++;
}
}
}
@end
एक विशिष्ट उद्देश्य के लिए, हम सेकंड, मिनट और घंटे को सीधे नहीं छू सकते हैं, और इसे केवल एक विधि का उपयोग करके सेकंड में वृद्धि करने की अनुमति है। केवल यह विधि उदाहरण चर की चाल का उपयोग करके मूल्यों को बदल सकती है।
चूंकि स्विफ्ट में इस तरह की चीजें नहीं हैं, इसलिए मैं एक समकक्ष खोजने की कोशिश कर रहा हूं। अगर मैं ऐसा करता हूं:
class Clock : NSObject {
var hours: UInt = 0
var minutes: UInt = 0
var seconds: UInt = 0
func incrementSeconds() {
self.seconds++
if self.seconds == 60 {
self.seconds = 0
self.minutes++
if self.minutes == 60 {
self.minutes = 0
self.hours++
}
}
}
}
यह काम करेगा, लेकिन कोई भी सीधे गुण बदल सकता है।
हो सकता है कि मेरा पहले से ही Objective-C में ख़राब डिज़ाइन था और इसीलिए संभावित नई Swift समतुल्य नहीं है। यदि किसी के पास उत्तर नहीं है और मैं बहुत आभारी हूं;)
हो सकता है कि भविष्य में Apple द्वारा वादा किया गया एक्सेस कंट्रोल मैकेनिज्म इसका जवाब हो?
धन्यवाद!