Menu
CoddyTech

Dosyalarla Çalışma

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

Gerçek programlar birkaç dosyaya bölünür. R'de source("Greeting.R") başka bir dosyayı baştan sona çalıştırır ve bu dosyanın tanımladığı tüm işlevler sonrasında kullanılabilir:

# Greeting.R
greeting <- function(name) {
  paste0("Hello, ", name, "!")
}

# main.R
source("Greeting.R")
cat(greeting("Ada"), "\n")

main.R çalıştırıldığında Hello, Ada! yazdırılır: source() satırı, main.R onu çağırmadan önce greeting() işlevini yükler.

Program, çalıştırdığınız dosyada başlar; burada main.R dosyasında ve R dosyayı satır satır okur. Sıra önemlidir: bir işlev yalnızca onu tanımlayan dosya kaynak olarak yüklendikten sonra kullanılabilir, bu yüzden source() satırları en üste yazılır:

# main.R
cat(greeting("Ada"), "\n")   # Hata: "greeting" fonksiyonu bulunamadı
source("Greeting.R")
cat(greeting("Ada"), "\n")   # çalışıyor: greeting() artık mevcut

Genel düzen, sınıf başına bir dosya olacak ve dosya sınıfın adını taşıyacak şekildedir: Account.R, account kurucusunu ve yöntemlerini; Shape.R ise shape genel işlevlerini içerir. Bu bölümdeki alıştırmalarda kodunuzu bu dosyalara yazarsınız; main.R ise sağlanan girdi/çıktı kodunu içerir ve source() satırları en üstte, doğru sırada zaten bulunur. Düzenleyicide her dosya bir sekme olarak gösterilir.

Shape.R      # tüm şekillerin paylaştığı genel fonksiyonlar: önce bunu source ile yükleyin
Circle.R     # daire sınıfı ve metotları
main.R       # source("Shape.R"); source("Circle.R"); girdiyi okur, sonuçları yazdırır

source() bir dosyayı global ortamda çalıştırır; böylece dosyadaki işlevler ve değişkenler global adlar hâline gelir. R'de dosyaya özel adlar yoktur: iki dosya da helper() tanımlarsa, en son kaynak olarak yüklenen dosyanın tanımı geçerli olur. Kaynak olarak yüklenen bir dosyada tek başına bir satırda bulunan değer de yazdırılmaz; bu nedenle bir şey göstermesi gereken dosyalar cat() çağırır:

# Tools.R
total <- 0                 # source() ile yüklendikten sonra genel bir değişken
42                         # source() tarafından yazdırılmaz
helper <- function(x) x * 2

# Other.R
helper <- function(x) x + 1   # daha sonra source() ile yüklenir: yukarıdaki helper işlevinin yerini alır
challenge icon

Görev

Kolay

Program iki dosyadan oluşuyor. main.R, Greeting.R dosyasını kaynak olarak alır, adları okur ve her biri için greeting(name) sonucunu yazdırır. Ada adı için Hello, Ada!, ad boş olduğunda ise Hello, friend! döndürmesi için Greeting.R içindeki greeting() işlevini tamamla.

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

Kendin dene

source("Greeting.R")

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
for (name in input) cat(greeting(name), "\n", sep = "")
quiz iconKendini test et

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

Nesne Tabanlı Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi