Menu
CoddyTech

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 bölünür. Bir Ruby dosyası, ardından geçerli dosyaya göreli dosya yolu gelen require_relative ile başka bir dosyayı yükler; genellikle .rb uzantısı kullanılmaz. Bu satırdan sonra yüklenen dosyanın yöntemleri 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 komutunu çalıştırmak Hello, Ada! çıktısını verir: main.rb, greeting.rb dosyasını yükler ve ardından bu dosyanın yöntemini çağırır.

Program, çalıştırdığınız dosyada başlar; burada main.rb dosyasında ve Ruby onu yukarıdan aşağıya 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üklendikten sonra kullanılabilir:

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

Genel düzen, dosya başına bir sınıftır ve dosyaya sınıfın adı snake_case biçiminde verilir: 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 her dosya için, yükleme sırasına göre bir require_relative satırıyla başlar: başka bir sınıfın temel aldığı 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 paylaştıkları, adın türüne bağlıdır. Bir dosyanın en üstünde def ile tanımlanan metotlar, sınıflar ve sabitler, ondan sonra yüklenen her dosyada kullanılabilir. Yerel değişken yalnızca kendi dosyasına aittir:

# settings.rb
limit = 3                  # yerel değişken: yalnızca settings.rb onu görebilir
MAX_ITEMS = 3              # sabit: yüklendikten sonra erişilebilir
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ımlanmamış yerel değişken
challenge icon

Görev

Kolay

Program iki dosyadan oluşur. main.rb, greeting.rb dosyasını yükler, adları okur ve greeting(name) sonucunu yazdırır. greeting.rb içindeki greeting işlevini, Ada adı için Hello, Ada!, ad boş olduğunda ise Hello, friend! döndürecek şekilde tamamla.

Kodunu greeting.rb dosyasına yaz. main.rb, sağlanan giriş/çıkış kodunu içerir ve düzenlenemez.

Kendin dene

require_relative 'greeting'

# Sağlanan giriş/çıkış 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