Ruby Academy · पाठ

include और extend

व्यवहार को mix in करना

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

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

व्यवहार को मिक्सिन के रूप में जोड़ना

मॉड्यूल की असली शक्ति मिक्सिन है: इनहेरिटेंस के बिना क्लासों के बीच विधियाँ साझा करना। इसके दो मुख्य साधन include और extend हैं।

module Walkable
  def walk
    "#{name} is walking"
  end
end
class Person
  include Walkable
  attr_reader :name
  def initialize(name)
    @name = name
  end
end
puts Person.new("Ada").walk

include इंस्टेंस विधियाँ जोड़ता है

include किसी मॉड्यूल की विधियों को इंस्टेंस विधियों के रूप में मिलाता है। क्लास के हर ऑब्जेक्ट को ये विधियाँ मिल जाती हैं।

module Sayable
  def say(msg)
    "#{msg}!"
  end
end
class Dog
  include Sayable
end
puts Dog.new.say("Woof")

क्लासों के बीच फिर से उपयोग करना

एक ही मॉड्यूल को कई असंबंधित क्लासों में शामिल किया जा सकता है, जिससे किसी साझा अभिभावक के बिना व्यवहार साझा होता है।

module Timestamped
  def stamp
    "created"
  end
end
class Post; include Timestamped; end
class Comment; include Timestamped; end
puts Post.new.stamp
puts Comment.new.stamp

extend क्लास विधियाँ जोड़ता है

extend किसी मॉड्यूल की विधियों को क्लास विधियों के रूप में मिलाता है, यानी ऐसी विधियों के रूप में जो स्वयं क्लास ऑब्जेक्ट पर होती हैं।

module Findable
  def find(id)
    "Finding record #{id}"
  end
end
class User
  extend Findable
end
puts User.find(42)

किसी ऑब्जेक्ट पर extend

आप किसी एक ऑब्जेक्ट पर extend कर सकते हैं, ताकि केवल उसी को ये विधियाँ मिलें और बाकी ऑब्जेक्ट अप्रभावित रहें।

module Admin
  def privileges
    "all access"
  end
end
user = Object.new
user.extend(Admin)
puts user.privileges

include बनाम extend

यह अंतर याद रखिए:

  • include => विधियाँ इंस्टेंस विधियाँ बन जाती हैं।
  • extend => विधियाँ क्लास/ऑब्जेक्ट विधियाँ बन जाती हैं।
module Helper
  def help; "helping"; end
end
class A; include Helper; end
class B; extend Helper; end
puts A.new.help
puts B.help

मॉड्यूल मेज़बान की विधियाँ देख सकते हैं

मिक्सिन के रूप में जोड़ी गई विधि मेज़बान ऑब्जेक्ट के संदर्भ में चलती है, इसलिए वह मेज़बान की अपनी विधियों को चला सकती है और उसके डेटा तक पहुँच सकती है।

module Describable
  def describe
    "I am #{role}"
  end
end
class Worker
  include Describable
  def role; "a worker"; end
end
puts Worker.new.describe

included हुक

जब कोई मॉड्यूल शामिल किया जाए, तब कोड अपने आप चलाने के लिए self.included(base) परिभाषित कीजिए। एक सामान्य तरीका उसी समय क्लास विधियाँ जोड़ता है।

module Trackable
  def self.included(base)
    puts "Trackable added to #{base}"
  end
end
class Order
  include Trackable
end

सदस्यता की जाँच करना

is_a? और ancestors दिखाते हैं कि शामिल किया गया मॉड्यूल ऑब्जेक्ट की प्रकार-श्रृंखला का हिस्सा बन जाता है।

module Flyable; end
class Bird; include Flyable; end
b = Bird.new
puts b.is_a?(Flyable)
p Bird.ancestors

कई मिक्सिन को मिलाना

एक क्लास कई मॉड्यूल शामिल कर सकती है और कई छोटे, केंद्रित हिस्सों से व्यवहार का संयोजन कर सकती है।

module Swimmable; def swim; "swimming"; end; end
module Runnable; def run; "running"; end; end
class Athlete
  include Swimmable
  include Runnable
end
a = Athlete.new
puts a.swim
puts a.run

सब कुछ एक साथ

मिक्सिन लचीले ढंग से व्यवहार साझा करते हैं:

  • इंस्टेंस विधियों के लिए include।
  • क्लास या एकल-ऑब्जेक्ट विधियों के लिए extend।
  • मिक्सिन विधियाँ मेज़बान के संदर्भ में चलती हैं।
  • कई छोटे मॉड्यूल का संयोजन कीजिए।
module Greet
  def hi; "hi from #{self.class}"; end
end
class Cat; include Greet; end
puts Cat.new.hi

त्वरित जाँच

include और extend के बारे में अपनी समझ जाँचिए।

पुनरावलोकन

आपने मिक्सिन के बारे में सीखा:

  • include => इंस्टेंस विधियाँ।
  • extend => क्लास या एकल-ऑब्जेक्ट विधियाँ।
  • मिक्सिन विधियाँ मेज़बान के संदर्भ में चलती हैं।
  • शामिल किए जाने पर included हुक चलता है।
module Loud
  def shout(s); s.upcase; end
end
class Speaker; include Loud; end
puts Speaker.new.shout("hello")
शुरुआत निःशुल्क

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

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

पाठ्यक्रम
29
पाठ
109

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

क्या “include और extend” पाठ निःशुल्क है?

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

“include और extend” में मैं क्या सीखूँगा?

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

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

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

“include और extend” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. Modules परिभाषित करना
  2. include और extend
  3. Comparable और Enumerable
  4. prepend और Method Resolution
← Ruby Academy पर वापस जाएँ