Ruby Academy · Pelajaran

Mentakrifkan Modul

Ruang nama dan kaedah

Pelajaran 1 daripada 413 langkah

Mentakrifkan Modul ialah pelajaran Ruby Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ruby Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Ruang Nama dan Kaedah

Modul ialah bekas untuk kaedah dan pemalar. Tidak seperti kelas, anda tidak boleh mencipta tika modul. Modul mempunyai dua peranan: mengumpulkan kod (ruang nama) dan berkongsi tingkah laku (campuran).

module Greeter
  def self.hello
    "Hello from the module"
  end
end
puts Greeter.hello

Kaedah Modul

Takrifkan kaedah dengan self. untuk memanggilnya secara terus pada modul, seperti fungsi utiliti. Kaedah ini sering dipanggil fungsi modul.

module MathTools
  def self.square(x)
    x * x
  end
end
puts MathTools.square(7)

Pemalar Modul

Modul juga menyimpan pemalar. Akses pemalar tersebut dengan operator skop ::.

module Physics
  GRAVITY = 9.81
end
puts Physics::GRAVITY

Menamakan Kelas dalam Ruang Nama

Balut kelas dalam modul untuk mengelakkan pertembungan nama. Nama penuh menggunakan ::.

module Store
  class Item
    def initialize(name)
      @name = name
    end
    def to_s
      @name
    end
  end
end
puts Store::Item.new("Book")

Kepentingan Ruang Nama

Dua pustaka mungkin mentakrifkan Logger yang sama. Ruang nama memisahkannya: Audio::Logger dan Network::Logger tidak akan bertembung.

module Audio
  class Logger
    def name; "audio logger"; end
  end
end
module Network
  class Logger
    def name; "network logger"; end
  end
end
puts Audio::Logger.new.name
puts Network::Logger.new.name

Fungsi Modul

module_function menjadikan kaedah berikut boleh dipanggil pada modul dan sebagai kaedah tika peribadi apabila dicampurkan. Fungsi ini mengelakkan pengulangan self..

module Calc
  module_function
  def add(a, b)
    a + b
  end
end
puts Calc.add(2, 3)

Mengumpulkan Pemalar Berkaitan

Modul sangat sesuai untuk menyusun nilai konfigurasi yang berkaitan di bawah satu nama yang jelas.

module Color
  RED = "#FF0000"
  GREEN = "#00FF00"
  BLUE = "#0000FF"
end
puts Color::GREEN

Modul Bersarang

Modul boleh disarangkan di dalam modul lain untuk penyusunan yang lebih terperinci.

module App
  module Config
    VERSION = "1.0"
  end
end
puts App::Config::VERSION

Menyenaraikan Kandungan Modul

Kaedah refleksi membolehkan anda memeriksa pemalar dan kaedah modul semasa program berjalan.

module Settings
  WIDTH = 80
  HEIGHT = 24
end
p Settings.constants

Modul Tidak Boleh Dijadikan Tika

Percubaan menggunakan Module.new pada gaya modul bernama akan gagal kerana modul tidak mempunyai pembina untuk tika. Modul ialah ruang nama dan pemegang tingkah laku, bukan pelan binaan untuk objek.

module Tools
end
begin
  Tools.new
rescue NoMethodError => e
  puts "Cannot instantiate: #{e.message}"
end

Menggabungkan Semuanya

Modul menyusun dan berkongsi kod:

  • Gunakan self.method untuk fungsi modul yang boleh dipanggil.
  • Simpan pemalar yang diakses dengan ::.
  • Namakan kelas dalam ruang nama untuk mengelakkan pertembungan.
  • Anda tidak boleh menjadikan modul sebagai tika.
module Geometry
  PI = 3.14159
  def self.circle_area(r)
    PI * r * r
  end
end
puts Geometry.circle_area(2)

Semakan Ringkas

Uji pemahaman anda tentang modul.

Imbas Kembali

Anda telah mempelajari cara mentakrifkan modul:

  • Modul mengumpulkan kaedah dan pemalar.
  • self.method mentakrifkan fungsi modul yang boleh dipanggil.
  • :: mengakses pemalar dan kelas bersarang.
  • Ruang nama menghalang pertembungan nama.
module Util
  def self.shout(s)
    s.upcase + "!"
  end
end
puts Util.shout("ruby")
Percuma untuk bermula

Pelajari Ruby dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
29
Pelajaran
109

Soalan Lazim

Adakah pelajaran “Mentakrifkan Modul” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Ruby Academy, termasuk “Mentakrifkan Modul”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Ruby Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mentakrifkan Modul”?

Ruang nama dan kaedah Anda berlatih Ruby Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Ruby Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ruby Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Mentakrifkan Modul” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ruby Academy ini?

Ya. Setiap pelajaran Ruby Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

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