Menu
Coddy logo textTech

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ığı her işlev daha sonra 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 dosyası onu çağırmadan önce greeting() işlevini yükler.

Program, çalıştırdığınız dosyada (burada main.R) başlar ve R bu dosyayı satır satır okur. Sıra önemlidir: bir işlev, onu tanımlayan dosya kaynak olarak alındıktan sonra var olur; bu nedenle source() satırları en üstte yer alır:

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

Genellikle düzen, her dosyada sınıfın adını taşıyan bir sınıf olacak şekildedir: Account.R, account yapıcısını ve yöntemlerini; Shape.R ise shape generic'lerini içerir. Bu bölümdeki görevlerde kodunuz bu dosyalara yazılır ve main.R, üst kısmında doğru sırada hazır olarak bulunan source() satırlarıyla birlikte sağlanan girdi/çıktı kodunu içerir. Düzenleyici her dosyayı bir sekme olarak gösterir.

Shape.R      # her şekil tarafından paylaşılan jenerikler: önce source edin
Circle.R     # daire sınıfı ve metotları
main.R       # source("Shape.R"); source("Circle.R"); girdi okur, sonuçları yazdırır

source(), bir dosyayı global ortamda çalıştırır; bu nedenle dosyanın işlevleri ve değişkenleri global adlara dönüşür. R'de dosyaya özel adlar yoktur: iki dosya helper() tanımlarsa, en son kaynak olarak alınan dosya kazanır. Kaynak olarak alınan bir dosyada kendi satırında bulunan bir değer de yazdırılmaz; bu nedenle bir şey göstermesi gereken dosyalar cat() çağırır:

# Tools.R
total <- 0                 # source edildiğinde global 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 edilir: yukarıdaki helper'ı değiştirir
challenge icon

Görev

Kolay

Programın iki dosyası vardır. main.R, Greeting.R dosyasını kaynak olarak kullanır, adları okur ve her biri için greeting(name) sonucunu yazdırır. Greeting.R içindeki greeting() işlevini tamamlayarak Ada adı için Hello, Ada! döndürmesini, ad boş olduğunda ise Hello, friend! döndürmesini sağlayın.

Kodunuz Greeting.R dosyasına yazılmalıdır. main.R sağlanan girdi/çıktı 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