Menu
Coddy logo textTech

Dosyalarla Çalışma

Coddy'nin Ruby Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 1 / 57.

Gerçek programlar birkaç dosyaya ayrılır. Bir Ruby dosyası, ardından geçerli dosyaya göre dosyanın yolunu (genellikle .rb uzantısı olmadan) belirterek başka bir dosyayı require_relative ile yükler. Bu satırdan sonra, yüklenen dosyanın metotları ve sınıfları kullanılabilir:

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

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

ruby main.rb çalıştırıldığında Hello, Ada! yazdırılır: main.rb, greeting.rb dosyasını yükler ve ardından onun metodunu çağırır.

Program, çalıştırdığınız dosyada (burada main.rb) başlar ve Ruby onu yukarıdan aşağıya doğru yürütür. require_relative, diğer dosyayı o noktada ve yalnızca ilk kez çalıştırır: ikinci bir require_relative 'greeting', false döndürür ve hiçbir şey yapmaz. Bir ad, onu tanımlayan dosya yüklenmeden önce kullanılamaz:

# main.rb
# puts greeting("Bo")          # NoMethodError: greeting.rb henüz yüklenmedi
require_relative 'greeting'     # greeting.rb'yi çalıştırır, true döndürür
require_relative 'greeting'     # zaten yüklenmiş, false döndürür
puts greeting("Bo")

Yaygın düzen, dosya adının sınıfın adını snake_case biçiminde taşıdığı, dosya başına bir sınıf olacak şekildedir: class Dog, dog.rb dosyasında; class BankAccount ise bank_account.rb dosyasında bulunur. Bu bölümdeki alıştırmalarda main.rb, sağlanan girdi/çıktı kodunu içerir ve yükleme sırasına göre her dosya için bir require_relative satırıyla başlar: başka bir sınıfın üzerine kurulan sınıf önce yüklenir.

dog.rb            # class Dog ... end
bank_account.rb   # class BankAccount ... end
functions.rb      # yardımcı metotlar
main.rb           # require_relative satırları, ardından girdi/çıktı kodu

Bir dosyanın neyi paylaşacağı, adın türüne bağlıdır. Bir dosyanın en üstünde def ile tanımlanan yöntemler, sınıflar ve sabitler, dosyadan sonra yüklenen her dosya tarafından kullanılabilir. Yerel bir değişken yalnızca kendi dosyasına aittir:

# settings.rb
limit = 3                  # yerel değişken: yalnızca settings.rb onu görür
MAX_ITEMS = 3              # sabit: yüklendikten sonra görünür
def limit_text
  "at most #{MAX_ITEMS}"
end

# main.rb
require_relative 'settings'
puts limit_text            # en fazla 3
puts MAX_ITEMS             # 3
# puts limit               # NameError: tanımsız yerel değişken
challenge icon

Görev

Kolay

Programın iki dosyası vardır. main.rb, greeting.rb dosyasını yükler, adları okur ve greeting(name) sonucunu yazdırır. Ada adı için Hello, Ada! döndürmesi veya ad boş olduğunda Hello, friend! döndürmesi için greeting işlevini greeting.rb içinde tamamla.

Kodun greeting.rb dosyasına yazılmalıdır. main.rb, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

require_relative 'greeting'

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input = []
while (line = gets)
  input << line.chomp
end
input.each { |name| puts greeting(name) }
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Ruby derleyicisi