Type inference

م. خديجة باحويرثمنذ 4 سنوات

السلام عليكم و رحمة الله و بركاته

في الدرس السابق عرفنا متغيرات بالشكل التالي:

var name = "Richard"

هل لاحظت في الكود السابق أننا لم نكتب نوع المتغير عند تعريفه؟ هذا الشيء مختلف عن الجافا بحيث أنه في الجافا يجب عند تعريف المتغيرات تحديد نوعها بشكل إلزامي في عملية التعريف للمتغير Declaration.

في الكوتلن ليس من الضروري تعريف النوع للمتغيرات بشكل صريح, فالمترجم Compiler يحاول استنتاج نوع المتغير من خلال القيمة المعطاة له. هذه الخاصية في الكوتلن تسمى الـ Type inference

مثال آخر عن الـ Type inference:

val age = 20  // Integer value
val married = true   //Boolean value

المتغيرات variables و القيم values  ليست هي الوحيدة التي فقط نستخدم فيها هذه الميزة (Type inference), يمكننا أيضا استخدامها في الدوال ذات السطر الواحد (Single Expression Function) بحيث ان القيمة العائدة من الدالة (return value) يمكن استنتاج نوعها من خلال العبارة داخل الدالة. المثال التالي يوضح المعنى أكثر:

fun square( num : Int ) = num * num

فالدالة السابقة تعود بالقيمة integer و رغم أننا لم نقوم بكتابة نوع القيمة العائدة منها فإن المترجم سيكتشف ذلك. (سيتم الحديث عن الدوال في دروس لاحقة)

أيضا بعض الأحيان يكون من المفيد أن يتم كتابة النوع explicitly , ولمزيد من التوضيح كالتالي:

fun square( num : Int ) : Int = num * num

الكود التالي يوضح الـ Type inference :

ملاحظة:-

من الجيد أن نتمتع بهذه الميزة في الكوتلن و ندعه يستنتج نوع المتغير من خلال القيمة, كما أن الأندرويد ستديو و الـ IntelliJ لديها خاصية تسمى  Quick Documentation و التي تتيح لنا معرفة القيمة التي تم استنباطها. و طريقة ذلك:

* بوضع المؤشرعلى المتغير أو الدالة

* بعدها بالضغط على F1  في mac, و CTRL + Q  في الويندوز 

و عندها ستظهر القيمة التي تم استنباطها في الكوتلن, الصورة التالية توضح ذلك.

انتهى هذا الدرس تابعوني في دروس تالية 

و السلام عليكم و رحمة الله :)

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !