Menu
Coddy logo textTech

switch() Fonksiyonu

Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 47 / 64.

switch(x, name = value, ...), x metnini adlarla karşılaştırır ve eşleşen adın değerini döndürür. Aynı değişkene karşı yapılan uzun bir else if karşılaştırmaları zincirinin yerini alır:

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

Çıktı:

[1] 3

Adsız son değer, hiçbir şey eşleşmediğinde kullanılan varsayılan değerdir. Varsayılan değer olmadan, eşleşmeyen bir switch() görünmez bir şekilde NULL döndürür:

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

Çıktı:

[1] "work"
[1] TRUE

Boş bir değer bir sonrakine aktarılır; böylece birden fazla ad aynı sonucu paylaşabilir:

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

Çıktı:

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

Değerler süslü parantezler içindeki kod bloklarının tamamı olabilir ve sonuç, çalıştırılan bloğun son ifadesidir:

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))

Çıktı:

[1] 12
[1] 78.54
challenge icon

Görev

Kolay

calculate(a, op, b) işlevini tamamla. op, plus, minus, times ve over değerlerinden biridir. a ve b değerlerine uygulama sonucunu döndür veya diğer tüm op değerleri için unknown operation döndür. Sıfıra bölme işlemi cannot divide by zero döndürür.

Sağlanan kod, a, op ve b değerlerini (satır başına bir tane) okur ve döndürülen değeri yazdırır.

Kendin dene

calculate <- function(a, op, b) {
  # Kodunuzu buraya yazın
  "unknown operation"
}

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(calculate(as.numeric(input[1]), input[2], as.numeric(input[3])), sep = "\n")
quiz iconKendini test et

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

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi