← Back to Ruby Course | Chapter 10: Modules & Mixins | Lesson 2 of 6

include और extend

include एक module के actions को एक class से बने objects में mix करता है, जबकि extend इन्हें class में खुद add करता है। यह हर student को skills देने जैसा है या पूरी class को।

In this page:

  1. include और extend
Syntax
ruby
class ClassName
  include ModuleName    # instance methods
  extend ModuleName     # class methods
end

include और extend

एक class के अंदर include ModuleName module के methods को instance methods की तरह mix करता है, उस class के objects पर available।

extend ModuleName इसकी बजाय इन्हें class खुद (या एक specific object) पर methods की तरह mix करता है, static/class methods add करने जैसा। इनके बीच चुनना इस पर depend करता है कि behavior individual instances से belong करता है या पूरी class से।

Note:
  • include instance methods देता है (objects पर available)।
  • extend सीधे class या एक single object पर methods देता है।

उदाहरण: include and extend

markup
module Describable
  def describe
    puts "This is a #{self.class}"
  end
end

module ClassHelpers
  def class_info
    puts "Class: #{name}"
  end
end

class Widget
  include Describable
  extend ClassHelpers
end

Widget.new.describe
Widget.class_info
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. जब class-level methods चाहिए तब include इस्तेमाल करना, इसलिए Person.class_info NoMethodError raise करता है; extend इस्तेमाल करें।
  2. जब instance methods चाहिए तब extend इस्तेमाल करना, इसलिए objects को methods नहीं मिलते।
  3. यह भूल जाना कि module को include होने से पहले defined होना ज़रूरी है।
🔒

Chapter Quiz — Complete all 6 topics to unlock

0/6 topics done

Complete these topics first:

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.