قوائم الكلمات المفتاحية بنية بيانات من أزواج المفتاح والقيمة.
[month: "April", year: 2018]
قوائم الكلمات المفتاحية هي قوائم مكوّنة من الصفوف {key, value}، ويمكن أيضًا كتابتها بهذه الصورة، لكن الصيغة الأقصر أكثر انتشارًا.
[month: "April"] == [{:month, "April"}]
# => true
يجب أن تكون المفاتيح في قائمة الكلمات المفتاحية من الذرات، أما القيم فيمكن أن تكون أي شيء. ويمكن استخدام كل مفتاح أكثر من مرة. أزواج المفتاح والقيمة في قائمة الكلمات المفتاحية مرتّبة.
يمكنك التعامل مع قوائم الكلمات المفتاحية بالأساليب نفسها التي تستخدمها مع القوائم، أو يمكنك استخدام وحدة Keyword.
أنت مدير مطعم فاخر يمتلك قبو نبيذ كبيرًا. وكثير من عملائك من عشّاق النبيذ المتطلّبين. وليس من السهل العثور على زجاجة النبيذ المناسبة لعميل بعينه.
وبصفتك صاحب مطعم متمكّنًا من التقنية، قرّرت تسريع عملية اختيار النبيذ بكتابة تطبيق يتيح للضيوف تصفية أنواع النبيذ لديك وفق تفضيلاتهم.
على شاشة الترحيب في تطبيقك، تريد عرض شرح موجز لكل لون من ألوان النبيذ.
نفّذ الدالة WineCellar.explain_colors/0. لا تأخذ أي وسائط، وتُرجع قائمة كلمات مفتاحية مفاتيحها ألوان النبيذ وقيمها الشروح.
| اللون | الشرح |
|---|---|
:white |
Fermented without skin contact. |
:red |
Fermented with skin contact using dark-colored grapes. |
:rose |
Fermented with some skin contact, but not enough to qualify as a red wine. |
تُمثَّل زجاجة النبيذ كثُلاثية من نوع العنب والسنة وبلد المنشأ. وتُخزَّن أنواع النبيذ حسب لون النبيذ في قائمة كلمات مفتاحية.
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
]
نفّذ الدالة WineCellar.filter/3. ينبغي أن تأخذ قائمة كلمات مفتاحية من أنواع النبيذ، وذرّة لون، وقائمة كلمات مفتاحية من الخيارات، بقيمة افتراضية هي []. وينبغي أن تُرجع الدالة قائمة بأنواع النبيذ ذات اللون المعيّن.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white
)
# => [
# {"Chardonnay", 2015, "Italy"},
# {"Pinot grigio", 2017, "Germany"}
# ]
وسّع الدالة WineCellar.filter/3. عند تمرير خيار :year، ينبغي أن تُرجع الدالة قائمة بأنواع النبيذ ذات اللون المعيّن من سنة معيّنة.
استخدم الدالة WineCellar.filter_by_year/2 المنفّذة مسبقًا. تأخذ قائمة بأنواع النبيذ وسنة كوسائط، وتُرجع قائمة بأنواع النبيذ من سنة معيّنة.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015
)
# => [
# {"Chardonnay", 2015, "Italy"}
# ]
وسّع الدالة WineCellar.filter/3. عند تمرير خيار :country، ينبغي أن تُرجع الدالة قائمة بأنواع النبيذ ذات اللون المعيّن من بلد معيّن.
استخدم الدالة WineCellar.filter_by_country/2 المنفّذة مسبقًا. تأخذ قائمة بأنواع النبيذ وبلدًا كوسائط، وتُرجع قائمة بأنواع النبيذ من بلد معيّن.
تأكّد من أن الدالة تعمل عند تمرير الخيارين :year و :country معًا، بأي ترتيب.
WineCellar.filter(
[
white: {"Chardonnay", 2015, "Italy"},
white: {"Pinot grigio", 2017, "Germany"},
red: {"Pinot noir", 2016, "France"},
rose: {"Dornfelder", 2018, "Germany"}
],
:white,
year: 2015,
country: "Germany"
)
# => []
سجّل في Exercism لتتعلّم وتتقن Elixir عبر 58 مفهومًا168 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.