آموزش زبان کاتلین – درس ۴ (تبدیل نوع)

نویسنده : سید ایوب کوکبی ۳۰ مهر ۱۳۹۷

آموزش زبان کاتلین - درس 4 (تبدیل نوع)

در کاتلین ، مقادیر عددی به صورت خودکار به نوع دیگری تبدیل نمی‌شوند حتی وقتی امکانش وجود داشته باشد. در جاوا و بسیاری از زبان‌های برنامه‌نویسی دیگر وقتی عددی مثلاً از نوع int را در متغیری با نوع بزرگتر همچون Long ذخیره می‌کنیم، تبدیل نوع به صورت خودکار انجام می‌گیرد و کامپایلر خطا نمی‌دهد ولی در کاتلین اوضاع فرق می‌کند.

مثلاً این کد در جاوا بدون هیچ مشکلی اجرا می‌شود:

int number1 = 55;
long number2 = number1; // Valid code

 

مقدار number1 به صورت خودکار به long تبدیل شده و در متغیر number2 ذخیره می‌شود.

در کاتلین:

val number1: Int = 55
val number2: Long = number1 // Error: type mismatch

 

با وجود اینکه long بزرگتر از int است و به راحتی می‌تواند مقادیر Int را ذخیره کند ولی چنین کاری صورت نمی‌گیرد و خطا صادر می‌شود. بنابراین ناچارید به صورت صریح از متد toLong استفاده کنید.

val number1: Int = 55
val number2: Long = number1.toLong()

 

کاتلین این سیاست را جهت حفظ امنیت نوع وضع کرده است. شاید این موضوع را حساسیت بیش از حد بدانید ولی در موقعیت‌های خاصی ممکن است واقعاً دردسرساز شود. در StackOverflow پاسخ خوبی به این سوال که چرا کاتلین تبدیل نوع خودکار انجام نمی‌دهد داده شده که پیشنهاد می‌کنم حتماً بخوانید.

لیست توابع تبدیل نوع در کاتلین:

دقت کنید برای نوع boolean تابعی وجود ندارد.

تبدیل یک نوع بزرگ به کوچک در کاتلین

توابع بالا دو جهته هستند. یعنی هم می‌توانید برای تبدیل انواع کوچک به بزرگ و هم بزرگ به کوچک از آن‌ها استفاده کنید.

بخوانید  برنامه‌نویسی پیشرفته اندروید با زبان کاتلین - بخش سوم (RxJava)

با این حال باید مراقب باشید که تبدیل نوع بزرگ به کوچک ممکن است مقداری از داده‌ها را از بین ببرد. برای مثال:

fun main(args : Array<String>) {
val number1: Int = 545344
val number2: Byte = number1.toByte()
println(“number1 = $number1”)
println(“number2 = $number2”)
}

 

بعد از اجرای برنامه با این خروجی مواجه می‌شوید:

number1 = 545344
number2 = 64

 

 

 

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *