0Pricing
Ruby Academy · Pelajaran

Definisi Metode Dinamis

Pelajari cara mendefinisikan dan memanggil metode secara dinamis menggunakan define_method dan method_missing.

Definisi Metode Dinamis 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.

Membuat Metode Secara Dinamis

Definisi Metode Dinamis

Di Ruby, metode dapat dibuat secara dinamis saat program berjalan.

Hal ini memungkinkan kode yang lebih fleksibel dan dapat digunakan kembali.

Definisi Metode Dinamis — ilustrasi 1

Menggunakan define_method

Menggunakan define_method

Metode define_method memungkinkan pendefinisian metode secara dinamis.

class Person
  define_method(:greet) { puts 'Hello!' }
end

p = Person.new
p.greet

Menggunakan define_method dengan Parameter

Menggunakan define_method dengan Parameter

Anda dapat meneruskan argumen ke metode yang dibuat secara dinamis.

class Person
  define_method(:greet) { |name| puts "Hello, #{name}!" }
end

p = Person.new
p.greet('Alice')

Menggunakan method_missing

Menggunakan method_missing

Metode method_missing mencegat pemanggilan metode yang tidak terdefinisi.

class Person
  def method_missing(name, *args)
    puts "Method '#{name}' is missing!"
  end
end

p = Person.new
p.unknown_method

Menangani method_missing Secara Dinamis

Menangani method_missing Secara Dinamis

Anda dapat menggunakan method_missing untuk menangani metode secara fleksibel.

class DynamicPerson
  def method_missing(name, *args)
    if name.to_s.start_with?('say_')
      puts "You asked me to say: #{name.to_s.split('_')[1..-1].join(' ')}"
    else
      super
    end
  end
end

p = DynamicPerson.new
p.say_hello_world

Mengganti respond_to_missing?

Mengganti respond_to_missing?

Untuk menangani pemeriksaan metode dengan benar, ganti respond_to_missing?.

class DynamicPerson
  def method_missing(name, *args)
    if name.to_s.start_with?('say_')
      puts "Saying: #{name.to_s.split('_')[1..-1].join(' ')}"
    else
      super
    end
  end
  
  def respond_to_missing?(name, include_private = false)
    name.to_s.start_with?('say_') || super
  end
end

p = DynamicPerson.new
puts p.respond_to?(:say_hello)

Menggunakan method_missing untuk Pengambil dan Penyetel Dinamis

Menggunakan method_missing untuk Pengambil dan Penyetel Dinamis

Anda dapat membuat atribut dinamis menggunakan method_missing.

class DynamicPerson
  def initialize
    @data = {}
  end
  
  def method_missing(name, *args)
    attribute = name.to_s.sub(/=$/, '')
    if name.to_s.end_with?('=')
      @data[attribute] = args.first
    else
      @data[attribute]
    end
  end
end

p = DynamicPerson.new
p.name = 'Alice'
puts p.name

Risiko Keamanan method_missing

Risiko Keamanan method_missing

Penggunaan method_missing yang tidak tepat dapat menimbulkan risiko:

  • Perilaku yang tidak terduga saat menangani metode yang tidak dikenal.
  • Potensi masalah kinerja akibat pencarian metode yang berlebihan.
  • Kerentanan keamanan jika digabungkan dengan masukan pengguna.

Rangkuman Metode Dinamis

Selamat!

Anda telah mempelajari cara mendefinisikan dan memanggil metode secara dinamis di Ruby.

Selanjutnya, Anda akan mempelajari kelas terbuka dan modifikasi dinamis.

Definisi Metode Dinamis — ilustrasi 10

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Definisi Metode Dinamis” gratis?

Ya — teks lengkap “Definisi Metode Dinamis” 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 “Definisi Metode Dinamis”?

Pelajari cara mendefinisikan dan memanggil metode secara dinamis menggunakan define_method dan method_missing. 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 “Definisi Metode Dinamis” 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. Apa Itu Metaprogramming?
  2. Definisi Metode Dinamis
  3. Kelas Terbuka dan Monkey Patching
  4. Menggunakan send dan eval
← Kembali ke Ruby Academy