Menu
CoddyTech

Bekerja dengan file

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 1 dari 57.

Program nyata terbagi ke dalam beberapa file. Di R, source("Greeting.R") menjalankan file lain dari awal hingga akhir, dan setiap fungsi yang didefinisikan file itu tersedia setelahnya:

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

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

Menjalankan main.R mencetak Hello, Ada!: baris source() memuat greeting() sebelum main.R memanggilnya.

Program dimulai dari file yang kamu jalankan, di sini main.R, dan R membacanya baris demi baris. Urutan itu penting: sebuah fungsi hanya tersedia setelah file yang mendefinisikannya dimuat dengan source, jadi baris source() harus berada di bagian atas:

# main.R
cat(greeting("Ada"), "\n")   # Error: fungsi "greeting" tidak ditemukan
source("Greeting.R")
cat(greeting("Ada"), "\n")   # berhasil: greeting() sekarang tersedia

Tata letak yang umum adalah satu class per file, dengan nama sesuai nama class: Account.R berisi constructor account dan method-nya, Shape.R berisi fungsi generik shape. Dalam tantangan di bagian ini, kodemu ditulis di file-file tersebut, sedangkan main.R berisi kode input/output yang disediakan, dengan baris source() sudah ada di bagian atasnya dalam urutan yang benar. Editor menampilkan setiap file sebagai tab.

Shape.R      # fungsi generik yang dipakai bersama oleh setiap bentuk: jalankan source untuk file ini terlebih dahulu
Circle.R     # class lingkaran dan method-nya
main.R       # source("Shape.R"); source("Circle.R"); membaca input, mencetak hasil

source() menjalankan sebuah file di lingkungan global, sehingga fungsi dan variabelnya menjadi nama global. R tidak memiliki nama privat untuk file: jika dua file mendefinisikan helper(), definisi dari file yang terakhir di-source akan berlaku. Nilai yang ditulis pada baris tersendiri di file yang di-source juga tidak dicetak, jadi file yang seharusnya menampilkan sesuatu memanggil cat():

# Tools.R
total <- 0                 # menjadi variabel global setelah dijalankan dengan source()
42                         # tidak dicetak oleh source()
helper <- function(x) x * 2

# Other.R
helper <- function(x) x + 1   # dijalankan dengan source() belakangan: menggantikan helper di atas
challenge icon

Tantangan

Mudah

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

Kodemu ditulis di Greeting.R. main.R berisi kode input/output yang disediakan dan tidak dapat diedit.

Coba sendiri

source("Greeting.R")

# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
for (name in input) cat(greeting(name), "\n", sep = "")
quiz iconUji dirimu

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

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler R online