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").walkinclude 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.stampextend 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.privilegesinclude 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.helpModul 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.describePengait 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
endMemeriksa 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.ancestorsMenggabungkan 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.runMenyatukannya
Campuran membagikan perilaku secara fleksibel:
includeuntuk metode instans.extenduntuk 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.hiUji 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
includeddijalankan 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
- Mendefinisikan Modul
- include dan extend
- Comparable dan Enumerable
- prepend dan Resolusi Method