Menu
Coddy logo textTech

Sprawdzanie kluczy

Część sekcji Logika i przepływ sterowania ścieżki R w Coddy. Lekcja 8 z 64.

Zanim wyszukasz klucz, którego może brakować, sprawdź go za pomocą %in% wśród nazw:

stock <- c(apples = 12, pears = 0)
print("pears" %in% names(stock))
print("plums" %in% names(stock))

Wynik:

[1] TRUE
[1] FALSE

Warunek if wokół wyszukiwania zapewnia domyślną wartość dla brakującego klucza zamiast NA lub błędu:

stock <- c(apples = 12, pears = 0)
item <- "plums"
qty <- if (item %in% names(stock)) stock[[item]] else 0
print(qty)

Wynik:

[1] 0

Klucz, który istnieje i ma wartość 0, różni się od brakującego klucza: pears jest znany i out of stock, plums w ogóle nie jest sprzedawany.

Listy używają tego samego sprawdzenia %in% names(). Brakująca nazwa na liście zwraca NULL, a nie błąd, więc działa również is.null():

user <- list(name = "Ada", city = "London")
print(is.null(user[["email"]]))
print("city" %in% names(user))

Wynik:

[1] TRUE
[1] TRUE

Mała funkcja pomocnicza pozwala sprawdzać wszystko w jednym miejscu, gdy program wyszukuje wiele kluczy:

get_or <- function(x, key, default) {
  if (key %in% names(x)) x[[key]] else default
}
stock <- c(apples = 12)
print(get_or(stock, "apples", 0))
print(get_or(stock, "kiwis", 0))

Wynik:

[1] 12
[1] 0
challenge icon

Wyzwanie

Łatwy

Uzupełnij stock_status(stock, item). Zwróć unknown, jeśli item nie jest kluczem w stock, out of stock, jeśli jego wartość wynosi 0, a w przeciwnym razie in stock: , po którym następuje ilość.

Podany kod odczytuje stan magazynowy jako pary name=quantity oddzielone przecinkami, a następnie nazwę przedmiotu i wypisuje zwróconą wartość.

Spróbuj swoich sił

stock_status <- function(stock, item) {
  # Wpisz tutaj swój kod
  ""
}

# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
input <- suppressWarnings(readLines(file("stdin")))
stock <- c()
for (pair in strsplit(input[1], ",")[[1]]) {
  kv <- strsplit(pair, "=")[[1]]
  stock[kv[1]] <- as.numeric(kv[2])
}
cat(stock_status(stock, input[2]), sep = "\n")
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ sterowania

Poćwicz samodzielnie: Kompilator R online