Menu
CoddyTech

Bekerja dengan file

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Ruby di Coddy. Pelajaran 1 dari 57.

Program nyata terbagi ke dalam beberapa file. File Ruby memuat file lain dengan require_relative, diikuti path file tersebut relatif terhadap file saat ini, biasanya tanpa akhiran .rb. Setelah baris itu, method dan class dari file yang dimuat dapat digunakan:

# greeting.rb
def greeting(name)
  "Hello, #{name}!"
end

# main.rb
require_relative 'greeting'
puts greeting("Ada")

Menjalankan ruby main.rb akan mencetak Hello, Ada!: main.rb memuat greeting.rb, lalu memanggil method-nya.

Program dimulai dari file yang kamu jalankan, di sini main.rb, dan Ruby mengeksekusinya dari atas ke bawah. require_relative menjalankan file lain pada titik tersebut, dan hanya pada kali pertama: pemanggilan kedua require_relative 'greeting' menghasilkan false dan tidak melakukan apa pun. Nama hanya dapat digunakan setelah file yang mendefinisikannya dimuat:

# main.rb
# puts greeting("Bo")          # NoMethodError: greeting.rb belum dimuat
require_relative 'greeting'     # menjalankan greeting.rb, mengembalikan true
require_relative 'greeting'     # sudah dimuat, mengembalikan false
puts greeting("Bo")

Susunan yang umum adalah satu class per file, dengan nama file mengikuti nama class dalam snake_case: class Dog ada di dog.rb, class BankAccount ada di bank_account.rb. Dalam tantangan di bagian ini, main.rb memuat kode input/output yang disediakan dan diawali satu baris require_relative untuk setiap file, sesuai urutan pemuatan: class yang menjadi dasar bagi class lain dimuat lebih dahulu.

dog.rb            # class Dog ... end
bank_account.rb   # class BankAccount ... end
functions.rb      # method pembantu
main.rb           # baris require_relative, lalu kode input/output

Apa yang dibagikan oleh sebuah file bergantung pada jenis namanya. Method yang didefinisikan dengan def di bagian atas file, class, dan konstanta dapat digunakan oleh setiap file yang dimuat setelahnya. Variabel lokal hanya dimiliki oleh file itu sendiri:

# settings.rb
limit = 3                  # variabel lokal: hanya settings.rb yang bisa mengaksesnya
MAX_ITEMS = 3              # konstanta: terlihat setelah dimuat
def limit_text
  "at most #{MAX_ITEMS}"
end

# main.rb
require_relative 'settings'
puts limit_text            # paling banyak 3
puts MAX_ITEMS             # 3
# puts limit               # NameError: variabel lokal tidak terdefinisi
challenge icon

Tantangan

Mudah

Program ini memiliki dua file. main.rb memuat greeting.rb, membaca nama, lalu mencetak hasil greeting(name). Lengkapi greeting di greeting.rb agar mengembalikan Hello, Ada! untuk nama Ada, atau Hello, friend! jika namanya kosong.

Letakkan kodemu di greeting.rb. main.rb berisi kode input/output yang disediakan dan tidak dapat diedit.

Coba sendiri

require_relative 'greeting'

# Kode input/output yang disediakan: biarkan apa adanya
input = []
while (line = gets)
  input << line.chomp
end
input.each { |name| puts greeting(name) }
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Ruby online