نوعدهی اردکی
From Wikipedia, the free encyclopedia
در برنامهنویسی شی گرا، نوعدهی اردکی (به انگلیسی: duck typing) یک شیوه نوعدهی پویاست که در آن خصوصیات و توابع فعلی شی معنای آن را مشخص میکند و نه ارث بری آن از یک کلاس خاص و interface. نام این نوع تایپ دهی از آزمون اردکی (duck test) که به James Whitcomb Riley منسوب است گرفته شدهاست که آن را میتوان به این صورت بیان کرد: «اگر پرندهای ببینم که مانند اردک راه میرود، مانند اردک شنا میکند و مانند اردک صدا درمیآورد، من به آن پرنده اردک میگویم» در تایپ دهی اردکی تمرکز ما فقط بر روی آن دسته از خصوصیات شی است که استفاده میشوند و نه نوع شی. برای مثال در یک زبان بدون تایپ دهی اردکی، میتوان تابعی نوشت که یک شی از نوع «اردک» میگیرد و متدهای «راه رفتن» و «صدا درآوردن» آن شی را فراخوانی میکند. اما در زبانی با تایپ دهی اردکی، همان تابع به این صورت است که یک شی از «هر نوع» میگیرد و متدهای «راه رفتن» و «صدا درآوردن» آن شی را فراخوانی میکند. اگر آن شی متدهای فراخوانی شده را نداشته باشد تابع در زمان اجرا خطا خواهد گرفت. پذیرش «هر نوع» شیی توسط تابع، که متدهای «راه رفتن» و «صدا درآوردن» درست را داشته باشد در واقع نشان دهنده نام این تایپ دهی و جمله بالاست که «اگر پرندهای ببینم که مانند اردک راه میرود، مانند اردک شنا میکند و مانند اردک صدا درمیآورد، من به آن پرنده اردک میگویم». در اینجا هم شیی که توابع درست را دارد پس شی درست است. تست نکردن نوع آرگومانها در توابع از روی عادت، مستندسازی، کدهای خوانا و واضح و تست کردن برای اطمینان از استفاده صحیح، به برنامهنویسی با تایپ دهی اردکی کمک میکند. برنامه نویسانی که به تایپ دهی ایستا عادت کردهاند و میخواهند از برنامههای با تایپ دهی پویا استفاده کنند، معمولاً تمایل دارند که قبل از اجرا چک کردن تایپ را به صورت استاتیک انجام دهند که با این کار از مزایا و انعطافپذیری تایپ دهی اردکی بهرهمند نمیشوند و پویایی زبان را با محدودیت مواجه میسازند.
![]() | این مقاله نیازمند تمیزکاری است. لطفاً تا جای امکان آنرا از نظر املا، انشا، چیدمان و درستی بهتر کنید، سپس این برچسب را بردارید. محتویات این مقاله ممکن است غیر قابل اعتماد و نادرست یا جانبدارانه باشد یا قوانین حقوق پدیدآورندگان را نقض کرده باشد. |
این مقاله نیازمند ویکیسازی است. لطفاً با توجه به راهنمای ویرایش و شیوهنامه، محتوای آن را بهبود بخشید. (اوت ۲۰۱۳) |