برنامه ای را تصورکنید که قرار است تعدادی سوال از کاربر بپرسه و با انتخاب گزینه ها به کاربر بگه که جواب صحیح را انتخاب کرده یا نه.
لیستی از سوال ها را به همراه جواب ها جمع آوردی کردم. اول خواستم که همشون را بریزم داخل یک لیست.
مشکل اینجاست یک لیست از نوشته ها را دارم اما نمی دونم چطور یک مقدار درست یا غلط بهش متصل کنم.
حالا من چطور سوال را به جواب بچسبونم ؟ تا بتونم بتونم جواب کاربر را با جواب چسبیده به سوال جواب بدم ؟
یک راه حل استفاده از array 2d است.
یعنی سوال با جواب داخل یک array قرار دارده و هر کدوم از سوال و جواب ها داخل یک array دیگه قرار دارند.
حالا چطوری بخونمش؟
اول array بیرونی که توی دل خودش داره (مثل عروسک های بابوشکا)
بزرکترین بابوشکا اول میاد بعد میره تویی
بعدش چطوری میره ایندکس های بعدی ؟
خوب کافیست که شماره ایندکس را از صفر به آنچه که فکر می کنم تغییر بدهم.
اولین بابوشکا که یک بابوشکا دیگه در دل دارد میشهarray [0][0] 2d
دردسری که داشتم این بود که پیدا کردن ایندکس جواب برای سوال خیلی سخت می شد.
struct Questions = {
var question = “what’s your name?"
var answer = “Ali"
}
var myquestion = Questions()
print (myquestion.name)
بعدش دیدم که خود امتحان را اگر بعنوان یک چیزی ببینم که متشکل شده از سوال و جواب سوال
می تونستم ( با استفاده از خاصیت object.properties) بنویسم امتحان.سوال و یا امتحان.جواب و بهشون برسم .
برای اینکار از استراکت استفاده می کنند. اگر هم استراکت هم نبود می تونیم کلاس بسازیم .
نکته مهم درباره استراکت اینه که بهتره در یک فایل مجزا ساخته بشه. مثلا من وقتی توی سویفت می نوشتم ..نتونستم بعد اینکه داخل کلاس یک استراکت تعریف کردم ازش استفاده کنم.
اسم فایل ساخته شده با اسم استراکت میگن یکی باشه. هردو با حرف بزرگ شروع بشه. همین
اگر خطای No such module ‘Question’ را گرفتید..یعنی اینکه دو اسم یکی نیستند.
امید است که این نوشته نفر بعدی را کمی سریعتر به راه حل مشکلش برساند.
با تشکر از زمانی که در اختیار این نوشته قرار دادید.