English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

القوائم Swift

ببساطة، المفهوم هو نوع بيانات، ولكنه نوع بيانات يحتوي فقط على بيانات مخصصة معينة، وهو مجموعة من البيانات التي تتمتع بمزايا مشتركة.

المفاهيم في Swift تشبه هيكل Objective C و C، وتعمل وظائف المفاهيم كالتالي:

  • يُعلن في الفئة، يمكن الوصول إلى قيمها من خلال تعميم الفئة.

  • يمكن أن تعرف المفاهيم أيضًا مكونات التأسيس (constructors) لتقديم قيمة بدءية للعضو؛ يمكن توسيع وظائفها على أساس التنفيذ الأصلي.

  • يمكن الالتزام بالمعاهدات (protocols) لتقديم وظائف قياسية.

النحو

في Swift، يتم استخدام الكلمة المفتاحية enum لإنشاء المفاهيم ووضع تعريفها الكامل داخل زوجين من الأسهم الكبيرة:

enum enumname {
   // تعريف المفهوم هنا
{}

على سبيل المثال، نحدد ما يلي كمفهوم يوضح الأيام من الأسبوع:

import Cocoa
// تعريف المفهوم
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
    case Saturday
{}
var weekDay = DaysofaWeek.THURSDAY
weekDay = .THURSDAY
switch weekDay
{
case .Sunday:
    print(\"السبت\")
case .Monday:
    print(\"الإثنين\")
case .TUESDAY:
    print(\"الثلاثاء\")
case .WEDNESDAY:
    print(\"الأربعاء\")
case .THURSDAY:
    print(\"الجمعة\")
case .FRIDAY:
    print(\"الخميس\")
case .Saturday:
    print(\"الجمعة\")
{}

نتيجة تنفيذ البرنامج أعلاه هي:

الجمعة

المقدار المحدد في المفهوم المفهوم (مثل Sunday،Monday،……وSaturdayهذا هو المقدار المحدد في هذا المفهومقيمة العضو(أوالمعلمون)。caseكلمة المفتاحية تعني أن قيمة جديدة للعضو ستُحدد في سطر جديد.

ملاحظة: على عكس C و Objective-C، لا يتم تعيين أعضاء القائمة التسميات في Swift إلى قيمة نوعها الأساسي عند إنشائها. في المثال السابق،DaysofaWeekفي هذا المثال،Sunday،Monday،……وSaturdayلن يتم تعيينها تلقائيًا إلى0،1،……و6على العكس من ذلك، فإن أعضاء القائمة التسميات لديهم قيم مكتوبة مسبقًا، والتي تكون مكتوبة بالفعل.DaysofaWeekنوع.

var weekDay = DaysofaWeek.THURSDAY

weekDayنوعه يمكن معرفته عندDaysofaWeekمن الممكن استنتاج نوعها عند تعيين قيمته كواحدة من القيم المحتملة لها.weekDayتم إعلانها كـDaysofaWeek، يمكنك استخدام لغة مختصرة (.) لضبطها على أخرىDaysofaWeekالقيمة:

var weekDay = .THURSDAY

عندweekDayعندما تكون نوع البيانات معروفًا، يمكن تجاهل اسم القائمة التسميات عند إعادة تعيينها. يمكن أن تجعل القيم المحددة بوضوح النوع من القائمة التسميات كودًا أكثر وضوحًا.

يمكن تقسيم القائمة التسميات إلى قيم مرتبطة وقيم أصلية.

الفرق بين القيم المرتبطة والقيم الأصلية

القيم المرتبطةالقيمة الأساسية
نوع البيانات مختلفنوع البيانات نفسه
مثال: enum {10,0.8,"Hello"}مثال: enum {10,35,50}
إنشاء القيم يعتمد على المستقرر أو المتغيرالقيم المسبقًا مليئة
تُضبط القيم المرتبطة عندما تُنشئ مستقررًا أو متغيرًا جديدًا بناءً على عضو قائمة التسميات، ويمكن أن تكون القيمة مختلفة في كل مرة تقوم بذلك.القيم الأصلية دائمًا تكون نفسها

القيم المرتبطة

في هذا المثال، نحدد نوعًا مصفوفة يُدعى Student، يمكن أن يكون String لنوع Name، أو قيمة مرتبطة لنوع Mark (Int,Int,Int).

import Cocoa
enum Student{
    case Name(String)
    case Mark(Int,Int,Int)
{}
var studDetails = Student.Name("w3codebox")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
    print("اسم الطالب هو: \(studName)\).
case .Mark(let Mark1, let Mark2, let Mark3):
    print("النسبة المئوية للطلاب هي: \(Mark1),\(Mark2),\(Mark3)\).
{}

نتيجة تنفيذ البرنامج أعلاه هي:

النسبة المئوية للطلاب هي: 98,97,95.

القيمة الأساسية

يمكن أن تكون القيمة الأساسية نصًا، رمزًا، أو أي قيمة عددية أو قيمة عشرية. يجب أن تكون القيمة الأساسية فريدة في بيانات القائمة.

في القوائم التي تكون قيمتها الأساسية عددًا، لا تحتاج إلى تعيين كل عضو بشكل داخلي، حيث سيقوم Swift بتعيين القيم تلقائيًا لك.

على سبيل المثال، عند استخدام العدد كقيمة أساسية، يتم تمرير القيم التالية بشكل تلقائي بزيادة 1. إذا لم يتم تعيين القيمة الأولى، سيتم تعيينها تلقائيًا إلى 0.

import Cocoa
enum Month: Int {
    case January = 1, February, March, April, May, June, July, August, September, October, November, December
{}
let yearMonth = Month.May.rawValue
print("شهر العدد هو: \(yearMonth)。")

نتيجة تنفيذ البرنامج أعلاه هي:

شهر العدد هو: 5.