Swift Academy · पाठ

mutating कीवर्ड

struct और enum की स्थिति में बदलाव करने वाली मेथड लिखिए।

पाठ 2, कुल 4 में से13 चरण

mutating कीवर्ड, CoddyKit पर Swift Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Swift Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

विधियाँ डिफ़ॉल्ट रूप से परिवर्तन नहीं कर सकतीं

किसी struct की इंस्टेंस विधि उसकी संग्रहीत संपत्तियों को तब तक नहीं बदल सकती, जब तक उसे mutating से चिह्नित न किया गया हो।

struct Counter {
    var value = 0
    mutating func increment() {
        value += 1
    }
}
var c = Counter()
c.increment()
print(c.value)

बदलाव आवश्यक क्यों है

क्योंकि संरचनाएँ मान प्रकार होती हैं, इसलिए कंपाइलर आपसे बदलाव की स्पष्ट अनुमति लेने की अपेक्षा करता है।

struct Bank {
    var balance = 0
    mutating func deposit(_ amount: Int) {
        balance += amount
    }
}
var b = Bank()
b.deposit(50)
print(b.balance)

बिना बदलाव वाली विधियाँ

केवल गुणधर्मों को पढ़ने वाली विधि को mutating की आवश्यकता नहीं होती।

struct Rectangle {
    var width = 0
    var height = 0
    func area() -> Int {
        return width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print(r.area())

एनम में बदलाव वाली विधि

एनम में भी ऐसी mutating विधियाँ हो सकती हैं, जो इंस्टेंस को किसी दूसरे विकल्प में बदल देती हैं।

enum Light {
    case on, off
    mutating func toggle() {
        self = (self == .on) ? .off : .on
    }
}
var l = Light.off
l.toggle()
print(l)

स्थिरांक पर विधि नहीं चला सकते

आप स्थिरांक (let) इंस्टेंस पर mutating विधि नहीं चला सकते; ऐसा करने पर कंपाइल करने में त्रुटि आती है।

struct Counter {
    var value = 0
    mutating func bump() { value += 1 }
}
var c = Counter()
c.bump()
// let d = Counter(); d.bump() // error
print(c.value)

कई गुणधर्मों में बदलाव

एक ही mutating विधि एक साथ कई गुणधर्मों को बदल सकती है।

struct Player {
    var x = 0
    var y = 0
    mutating func move(dx: Int, dy: Int) {
        x += dx
        y += dy
    }
}
var p = Player()
p.move(dx: 3, dy: 5)
print(p.x, p.y)

बदलाव करते हुए मान लौटाना

mutating विधि State बदलते हुए कोई मान भी लौटा सकती है।

struct Stack {
    var items: [Int] = []
    mutating func pop() -> Int? {
        return items.popLast()
    }
}
var s = Stack(items: [1, 2, 3])
print(s.pop() ?? -1)
print(s.items)

मानक लाइब्रेरी में बदलाव वाली विधियाँ

Array पर append जैसी विधियाँ mutating होती हैं, इसलिए उन्हें चलाने के लिए आपके पास var वाला ऐरे होना चाहिए।

var nums = [1, 2]
nums.append(3)
print(nums)

बदलाव वाली विधियाँ और परिकलित State

आप mutating विधि के भीतर व्युत्पन्न State को अपडेट कर सकते हैं और इस तरह सभी आवश्यक शर्तों को सुसंगत रख सकते हैं।

struct Wallet {
    var coins = 0
    var label = "empty"
    mutating func add(_ n: Int) {
        coins += n
        label = coins > 0 ? "has coins" : "empty"
    }
}
var w = Wallet()
w.add(5)
print(w.coins, w.label)

क्रम महत्वपूर्ण है

mutating विधि के भीतर के कथन ऊपर से नीचे तक चलते हैं, इसलिए बाद की पंक्तियाँ पहले किए गए बदलावों को देखती हैं।

struct Accumulator {
    var total = 0
    mutating func process() {
        total += 1
        total *= 10
    }
}
var a = Accumulator()
a.process()
print(a.total)

क्लास को बदलाव-सूचक की आवश्यकता नहीं

संदर्भ प्रकार (class) बिना किसी विशेष शब्द के गुणधर्मों में बदलाव कर सकते हैं, क्योंकि वे मान प्रकार नहीं होते।

class Box {
    var value = 0
    func bump() { value += 1 }
}
let box = Box()
box.bump()
print(box.value)

त्वरित जाँच

बदलाव-सूचक शब्द का परीक्षण कीजिए।

पुनरावलोकन

जब संरचना या एनम की इंस्टेंस विधि संग्रहीत गुणधर्मों को बदलती हो, तो उसे mutating चिह्नित कीजिए। एनम के मामले में यह विकल्प भी बदल सकती है। ऐसी विधियाँ let इंस्टेंस पर नहीं चलाई जा सकतीं। क्लास संदर्भ प्रकार होती हैं, इसलिए उन्हें इसकी आवश्यकता कभी नहीं होती।

struct C { var v = 0; mutating func inc() { v += 1 } }
var c = C()
c.inc()
print(c.v)
शुरुआत निःशुल्क

एआई शिक्षक के साथ Swift सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
122
पाठ
409

अक्सर पूछे जाने वाले प्रश्न

क्या “mutating कीवर्ड” पाठ निःशुल्क है?

हाँ — Swift Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “mutating कीवर्ड” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Swift Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“mutating कीवर्ड” में मैं क्या सीखूँगा?

struct और enum की स्थिति में बदलाव करने वाली मेथड लिखिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Swift Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Swift Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Swift Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“mutating कीवर्ड” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Swift Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Swift Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. वैल्यू प्रकार और अपरिवर्तनीयता
  2. mutating कीवर्ड
  3. Mutating और self का पुनःअसाइनमेंट
  4. बदलाव-रहित विकल्प
← Swift Academy पर वापस जाएँ