क्या समान कथनों के अनुक्रम को लिखने की आवश्यकता के बिना किसी फ़ंक्शन की प्रत्येक पंक्ति के लिए किसी शर्त की जांच करने का कोई तरीका है?

उदाहरण के लिए, मान लें कि हम चौकों के चक्रव्यूह से गुजर रहे हैं, जहां प्रत्येक वर्ग में बेतरतीब ढंग से इकट्ठा करने के लिए एक सिक्का हो सकता है, जबकि कुछ वर्गों में इकट्ठा करने के लिए सिक्का नहीं हो सकता है।

क्या एक फ़ंक्शन लिखने का एक प्रभावी तरीका है जो एक सिक्के के लिए प्रत्येक वर्ग की जाँच करता है, एक सिक्का एकत्र करता है यदि कोई सिक्का है, तो निर्दिष्ट अगले वर्ग में जाता है? मैं केवल collectCoin() विधि चलाना चाहता हूँ यदि कोई सिक्का है। अन्यथा, मैं सिर्फ यह देखना चाहता हूं कि क्या कोई सिक्का है और यदि कोई सिक्का नहीं है तो वर्ग से गुजरना है।

यहाँ एक उदाहरण है जिसे मैं एक अक्षम विधि मानता हूँ:

func collectTheCoins() {
    if isOnCoin {
        collectCoin()
    }
    
    moveForward()
    if isOnCoin {
        collectCoin()
    }
    
    moveRight()
    if isOnCoin {
        collectCoin()
    }
    
    moveLeft()
    if isOnCoin {
        collectCoin()
    }
    
} 

दक्षता उद्देश्यों के लिए, मेरा उद्देश्य केवल collectCoin() विधि अगर को चलाना है, वास्तव में एकत्र करने के लिए एक सिक्का है।

2
JMS 11 सितंबर 2020, 20:56

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपकी विधि collectCoin() हमेशा यह जांचने पर निर्भर करती है कि क्या isOnCoin == true तो आप स्थिति को समाप्त नहीं कर पाएंगे, लेकिन आप collectCoin() विधि की शुरुआत में एक guard isOnCoin else { return } रख सकते हैं। ताकि आपका कोड साफ-सुथरा दिखे और उन दोहरावों के बिना।

उदाहरण:

func collectCoin() {
    guard isOnCoin else { return }
    // Your collect coin logic
}

func collectTheCoins() {
    collectCoin()
    
    moveForward()
    collectCoin()
    
    moveRight()
    collectCoin()
    
    moveLeft()
    collectCoin()
}

इसके अलावा, यदि आप हमेशा चलने के बाद एक सिक्का एकत्र करते हैं तो आप अपनी प्रत्येक चाल विधि के अंत में collectCoin() भी रख सकते हैं और प्रत्येक चाल विधि कॉल के बाद उन अतिरिक्त collectCoin() कॉल से छुटकारा पा सकते हैं। आपको कुछ ऐसा मिलेगा:

func moveForward() {
    // Your move forward logic
    collectCoin()
}

func moveRight() {
    // Your move right logic
    collectCoin()
}

func moveLeft() {
    // Your move left logic
    collectCoin()
}

func collectTheCoins() {
    collectCoin()
    moveForward()
    moveRight()
    moveLeft()
}
1
Daniel E. Salinas 11 सितंबर 2020, 21:41