PDA

View Full Version : سوال: تعیین نوع در زمان اجرا



quiet_programmer
جمعه 05 فروردین 1390, 22:00 عصر
با سلام.

من میخوام با زبان برنامه نویسی پاسکال (بازم تاکید میکنم پاسکال نه دلفی) یه تابع swap بنویسم که بتونه با انواع دیتا تایپها کار کنه. مثل template <class x> void swap(x a, x b);l
همین که با قطعیت بگین این کار شدنیه یا نه، کمک بزرگی در حق اینجانب کردین.
راستی این هم کار منو را میندازه یه ساختمان داده پشته (Stack) نیاز دارم که بتونه با تمامی دیتا تایپها کار کنه که اگه unitی چیزی سراغ دارین دریغ نکنین. مثل ساختمان داده استک تو کتابخونه اس تی ال.

خیلی واجبه ممنون میشم اگه کسی کمکم کنه.

vcldeveloper
شنبه 06 فروردین 1390, 02:42 صبح
برای این کار می تونید درباره untyped parameters در پاسکال تحقیق کنید. البته پاسکال یک زبان strictly typed هست، پس انتظار نداشته باشید که دستتان برای هر نوع انتقالی و هر نوع تعویضی باز باشه.

quiet_programmer
شنبه 06 فروردین 1390, 10:48 صبح
با سلام.

جناب آقای علی کشاورز (http://barnamenevis.org/member.php?4729-%D8%B9%D9%84%DB%8C-%DA%A9%D8%B4%D8%A7%D9%88%D8%B1%D8%B2)احتمال متوجه سوال بنده نشدید. ببینید خوب سی پلاس هم strictly typed هست ولی با استفاده از template میشه نوع پارامتر یا کلاس یا ... رو در زمان اجرا تعیین کرد.

من قابلیت template که تو زبان c++ وجود داره رو تو پاسکال میخوام.


هر نوع تعویضی باز باشهاون بالا اگه دوباره نگاه کنین متغییر a و b هر دو از یه نوعه (نوع x) که x هنگام فراخوانی تابع معلوم میشه که هر دو باید از یک نوع باشن.



اگه کمک کنید ممنون میشم

vcldeveloper
شنبه 06 فروردین 1390, 17:17 عصر
خوب سی پلاس هم strictly typed هست ولی با استفاده از template میشه نوع پارامتر یا کلاس یا ... رو در زمان اجرا تعیین کرد.
اون در حین کامپایل تعیین میشه، نه در حین اجرا.


من قابلیت template که تو زبان c++ وجود داره رو تو پاسکال میخوام.
همچین چیزی در پاسکال استاندارد یا توربو پاسکال وجود نداره. شبیه ترین چیز بهش Generics هست، که اون هم در دلفی وجود داره، نه در پاسکال.

quiet_programmer
شنبه 06 فروردین 1390, 18:10 عصر
با سلام

مشکلم حل شد. با استفاده از نوع داده Pointer و استفاده از unit تونستم چیزی شبیه به اون رو پیاده سازی کنم.