التحقق من المفاتيح
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 8 من 64.
قبل البحث عن مفتاح قد يكون مفقودًا، تحقّق من وجوده باستخدام %in% ضمن الأسماء:
stock <- c(apples = 12, pears = 0)
print("pears" %in% names(stock))
print("plums" %in% names(stock))الناتج:
[1] TRUE
[1] FALSEيوفّر وضع if حول عملية البحث قيمة افتراضية للمفتاح المفقود، بدلًا من NA أو حدوث خطأ:
stock <- c(apples = 12, pears = 0)
item <- "plums"
qty <- if (item %in% names(stock)) stock[[item]] else 0
print(qty)الناتج:
[1] 0المفتاح الموجود وقيمته 0 يختلف عن المفتاح المفقود: pears معروف وقيمته out of stock، أما plums فلا يُباع إطلاقًا.
تستخدم القوائم فحص %in% names() نفسه. يُرجع الاسم المفقود في القائمة NULL بدلًا من حدوث خطأ، لذا تعمل is.null() أيضًا:
user <- list(name = "Ada", city = "London")
print(is.null(user[["email"]]))
print("city" %in% names(user))الناتج:
[1] TRUE
[1] TRUEيساعد دالّة مساعدة صغيرة على إبقاء التحقّق في مكان واحد عندما يبحث البرنامج عن مفاتيح كثيرة:
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))الناتج:
[1] 12
[1] 0التحدي
سهلأكمل stock_status(stock, item). أرجِع unknown إذا لم يكن item مفتاحًا في stock، وأرجِع out of stock إذا كانت قيمته 0، وإلا فأرجِع in stock: متبوعًا بالكمية.
تقرأ الشيفرة المرفقة المخزون على شكل أزواج name=quantity مفصولة بفواصل، ثم تقرأ العنصر، وتطبع القيمة المُعادة.
جرّب بنفسك
stock_status <- function(stock, item) {
# اكتب الكود الخاص بك هنا
""
}
# كود الإدخال والإخراج المقدم: اتركه كما هو
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")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهمتدرّب بنفسك: مترجم R عبر الإنترنت