Menu
CoddyTech

Fungsi switch()

Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 47 dari 64.

switch(x, name = value, ...) membandingkan teks x dengan nama-nama dan mengembalikan nilai yang cocok. Ini menggantikan rangkaian panjang perbandingan else if terhadap variabel yang sama:

size <- "m"
price <- switch(size, s = 2.5, m = 3, l = 3.5)
print(price)

Output:

[1] 3

Nilai terakhir tanpa nama adalah nilai default, yang digunakan saat tidak ada yang cocok. Tanpa nilai default, switch() yang tidak menemukan kecocokan akan mengembalikan NULL secara diam-diam:

day <- "fri"
print(switch(day, sat = "rest", sun = "rest", "work"))
print(is.null(switch("x", a = 1)))

Output:

[1] "work"
[1] TRUE

Nilai kosong diteruskan ke nilai berikutnya, sehingga beberapa nama dapat menghasilkan hasil yang sama:

kind <- function(day) switch(day, sat = , sun = "weekend", "weekday")
print(kind("sun"))
print(kind("tue"))

Output:

[1] "weekend"
[1] "weekday"

Nilainya bisa berupa seluruh blok kode di dalam kurung kurawal, dan hasilnya adalah ekspresi terakhir dalam blok yang dijalankan:

area <- function(shape, a, b = a) {
  switch(shape,
    square = a^2,
    rect = a * b,
    circle = {
      r <- a / 2
      round(pi * r^2, 2)
    },
    NA)
}
print(area("rect", 3, 4))
print(area("circle", 10))

Output:

[1] 12
[1] 78.54
challenge icon

Tantangan

Mudah

Lengkapi calculate(a, op, b). op adalah salah satu dari plus, minus, times, dan over. Kembalikan hasil penerapannya pada a dan b, atau unknown operation untuk nilai op lainnya. Pembagian dengan nol mengembalikan cannot divide by zero.

Kode yang disediakan membaca a, op, dan b (masing-masing satu baris), lalu mencetak nilai yang dikembalikan.

Coba sendiri

calculate <- function(a, op, b) {
  # Tulis kodemu di sini
  "unknown operation"
}

# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
cat(calculate(as.numeric(input[1]), input[2], as.numeric(input[3])), sep = "\n")
quiz iconUji dirimu

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

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online