در علوم رایانه، یک امضای نوع (به انگلیسی: type signature) یا یک تفسیر نوع (به انگلیسی: type annotation) ورودی ها و خروجی ها را برای یک تابع، زیرروال، یا اسلوب تعریف می‌کند. یک امضای نوع شامل تعداد، انواع، و ترتیب آرگومان‌های موجود در یک تابع است. یک امضای نوع معمولاً در زمان «تفکیک سربار» (چندریختی)، برای انتخاب تعریف درست یک تابع، که در میان چندین «فرم سربار شده» صدا زده می‌شود، استفاده می‌شود.[۱]

مثال‌ها ویرایش

++C/C ویرایش

در C و ++C، امضای نوع توسط نمونه‌اولیه تابع (Function prototype) اعلان می‌گردد. در ++C/C یک اعلان تابع، استفاده از آن را نمایان می‌سازد. برای مثال یک اشاره‌گر به تابع که به صورت زیر فراخوانی می‌گردد:[۱]

char c;
double d;
int retVal = (*fPtr)(c, d);

امضای زیر را دارد:

(int) (char, double);

جاوا ویرایش

در ماشین مجازی جاوا، «امضاهای نوع درونی» برای شناسایی متدها، و کلاس‌ها در سطح «کد ماشین مجازی» استفاده می‌شود.[۱]

مثال: متد

String String.substring(int, int)

در بایت کد به صورت زیر نمایش داده می‌شود:

Ljava/lang/String.substring(II)Ljava/lang/String;

امضای متد main() مشابه زیر است:

public static void main(String[] args)

و در بایت کد جداشده، فرم زیر را دارد:

Lsome/package/Main/main:([Ljava/lang/String;)V

امضای متد برای متد main() شامل سه اصلاح کننده است:[۱]

  • public نشان‌دهنده ی آن است که متد main() می تواند توسط هر شیی صدا زده شود.
  • static نشان می دهد که متد main() یک متد سطح کلاس است.
  • void نشان می دهد که متد main() هیچ مقدار بازگشتی ندارد.[۱]

منابع ویرایش

  1. ۱٫۰ ۱٫۱ ۱٫۲ ۱٫۳ ۱٫۴ "Type signature". Wikipedia (به انگلیسی). 2020-02-03.