0Pricing
Ruby Academy · Pelajaran

include dan extend

Sisipkan perilaku.

include dan extend adalah pelajaran Ruby Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Ruby Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Ruby Academy mencakup 4 pelajaran total.

Mencampurkan Perilaku

Kekuatan utama modul terletak pada campuran: berbagi metode di antara kelas tanpa pewarisan. Dua alat utamanya adalah include dan 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 Menambahkan Metode Instans

include mencampurkan metode modul sebagai metode instans. Setiap objek dari kelas tersebut akan mendapatkannya.

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

Menggunakan Kembali di Berbagai Kelas

Satu modul dapat disertakan oleh banyak kelas yang tidak saling berhubungan, sehingga perilaku dapat dibagikan tanpa induk yang sama.

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 Menambahkan Metode Kelas

extend mencampurkan metode modul sebagai metode kelas (metode pada objek kelas itu sendiri).

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

extend pada Sebuah Objek

Anda dapat melakukan extend pada satu objek sehingga hanya objek tersebut yang memperoleh metodenya, sementara objek lain tidak berubah.

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

include dibandingkan dengan extend

Ingat perbedaannya:

  • include => metode menjadi metode instans.
  • extend => metode menjadi metode kelas/objek.
module Helper
  def help; "helping"; end
end
class A; include Helper; end
class B; extend Helper; end
puts A.new.help
puts B.help

Modul Mengakses Metode Objek Pemilik

Metode yang dicampurkan berjalan dalam konteks objek pemilik, sehingga dapat memanggil metode milik objek tersebut dan mengakses datanya.

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

Pengait included

Definisikan self.included(base) untuk menjalankan kode secara otomatis ketika sebuah modul disertakan. Pola klasik ini sekaligus menambahkan metode kelas.

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

Memeriksa Keanggotaan

is_a? dan ancestors menunjukkan bahwa modul yang disertakan menjadi bagian dari rantai jenis objek.

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

Menggabungkan Beberapa Campuran

Sebuah kelas dapat menyertakan beberapa modul, dengan menyusun perilaku dari banyak bagian kecil yang berfokus.

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

Menyatukannya

Campuran membagikan perilaku secara fleksibel:

  • include untuk metode instans.
  • extend untuk metode kelas atau objek tunggal.
  • Metode yang dicampurkan berjalan dalam konteks objek pemilik.
  • Susun banyak modul kecil.
module Greet
  def hi; "hi from #{self.class}"; end
end
class Cat; include Greet; end
puts Cat.new.hi

Uji Cepat

Uji pemahaman Anda tentang include dan extend.

Ringkasan

Anda telah mempelajari campuran:

  • include => metode instans.
  • extend => metode kelas atau objek tunggal.
  • Metode yang dicampurkan berjalan dalam konteks objek pemilik.
  • Pengait included dijalankan saat penyertaan.
module Loud
  def shout(s); s.upcase; end
end
class Speaker; include Loud; end
puts Speaker.new.shout("hello")

Pertanyaan yang Sering Diajukan

Apakah pelajaran “include dan extend” gratis?

Ya — teks lengkap “include dan extend” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Ruby Academy, upgrade ke CoddyKit PRO. Kursus Ruby Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “include dan extend”?

Sisipkan perilaku. Kamu berlatih Ruby Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Ruby Academy?

Tidak diperlukan pengalaman sebelumnya. Ruby Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “include dan extend” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendefinisikan Modul
  2. include dan extend
  3. Comparable dan Enumerable
  4. prepend dan Resolusi Method
← Kembali ke Ruby Academy