Kotlin
 
fun petAnimalSafe(animal: Animal) {
val dog = animal as? Dog // در‌صورتی‌که animal، Dog باشد آن  طراحی اپلیکیشن در مشهد را برمی‌گرداند، در غیر این شکل null
if (dog != null) {
dog.bark()
} else {
println("این حیوان یک سگ نیست!")
}
}
 
fun main() {
val myDog = Dog()
petAnimalSafe(myDog) // خروجی: Woof!
 
val myCat = Cat()
petAnimalSafe(myCat) // خروجی: این حیوان یک سگ نیست!
}
۴. Smart Casts (تبدیل هوشمند)
کاتلین در بخش اعظمی از مورد ها به طور هوشمند نوع یک متغیر را بعد از یک تحقیق نوع (is یا این که !is)، تشخیص میدهد و نیازی به تبدیل مصرح با as ندارید.
 
Kotlin
 
fun process(obj: Any) {
if (obj is String) {
// در اینجا، obj به صورت خود کار به String تبدیل گردیده‌است
println("این یک حرفه به ارتفاع ${obj.length} میباشد.")
} else if (obj is Int) {
// در اینجا، obj به صورت اتومات به Int تبدیل گردیده‌است
println("این یکی درست با مقدار ${obj * ۲} میباشد.")
} else {
println("نوع ناشناخته.")
}
}
 
fun main() {
process("Hello Kotlin") // خروجی: این یک رشته به طول ۱۲ است.
process(۱۲۳) // خروجی: این یک عدد صحیح با مقدار ۲۴۶ است.
process(true) // خروجی: نوع ناشناخته.
}
خلاصه:
 
اعداد: مدام تبدیل مصرح با توابع toXxx() نیاز میباشد. مراقب از دست رفتن داده باشید.
حرفه‌ها: toString() برای تبدیل عدد به فن. toXxx()/toXxxOrNull() برای تبدیل فن به عدد.
شی ءها: as برای تبدیل ناایمن (ممکن میباشد ClassCastException بدهد). as? برای تبدیل ایمن (در شکل عدم توفیق null برمی‌گرداند).
Smart Casts: کاتلین در اکثری از سناریوهای رایج (مانند رسیدگی is) به صورت خود کار تبدیل را ایفا میدهد و نیازی به کد مازاد وجود ندارد.
ادراک این سازوکار‌های تبدیل برای تایپ کردن کد ایمن و کارآمد در کاتلین ضروری میباشد.
 
سوال های متداول پیرامون متغییرهای کاتلین
۱. تفاوت مهم دربین val و var چیست؟
val (Value): برای تمجید متغیرهای تنها‌خواندنی (read-only) یا این که غیرقابل تغییر و تحول (immutable) به کارگیری می‌گردد. مقدار آن بعد از او‌لین مقداردهی قابل تغییر تحول وجود ندارد. مانند یک اثبات در لهجه‌های دیگر (مثل final در جاوا).
var (Variable): برای تعریف و تمجید متغیرهای قابل تغییر و تحول (mutable) استعمال میشود. مقدار آن میتواند در زمان فرصت و در طی اجرای اپ، به دفعات تغییر تحول نماید.
۲. چه وقتی می بایست از val استعمال کنم و چه هنگامی از var؟
ضابطه کلی (شایسته ترین شیوه): مدام تلاش نمائید تا حد قابلیت و امکان از val استعمال نمائید. چنانچه می دانید که مقدار یک متغیر قرار وجود ندارد بعداز مقداردهی اول تغییر‌و تحول نماید، از val استعمال فرمائید. این شغل به تایپ کردن کدی ایمن‌خیس، قابل پیش‌بینی‌خیس و با باگ‌های کمتر امداد می‌نماید.
تنها در شکل نیاز از var استعمال نمائید: هنگامی متوجه شدید که حقیقتاً نیاز دارید مقدار یک متغیر را در حین اجرای اپ تغییر و تحول دهید (برای مثالً یک کانتر، یک موقعیت قابل تغییر تحول UI، یا این که داده‌ای که از ورودی مخاطب به‌روز می‌گردد)، آن‌گاه از var به کارگیری فرمائید.
چه وقتی نوع را صریحاً معین کنم؟
هنگامی که خوانایی کد ارتقاء مییابد (از جملهً برای گونه های غامض).
هنگامی که متغیر را در صدر مقداردهی نمیکنید.
زمانی که می خواهید نوع خاصی را زور فرمائید (برای مثالً val value: Long = 10 به مکان val value = 10 که Int را استنتاج می‌نماید).
“محدوده (Scope)” متغیر در کاتلین به چه معناست؟
محدوده به قسمتی از کد اشاره داراست که یک متغیر در آن قابل دسترسی میباشد.
متغیرهای تعریف‌و‌تمجید گردیده باطن یک تابع یا این که یک بلوک کد ({}) تنها در به عبارتی تابع/بلاک قابل دسترسی می باشند.
متغیرهای تمجید گردیده در سطح کلاس (اعضای کلاس) در مجموع آن کلاس قابل دسترسی می باشند.
متغیرهای Top-level (تعریف و تمجید گردیده سوا هر کلاس یا این که تابع) در مجموع پوشه قابل دسترسی میباشند.
فیض گیری
درین نوشته‌علمی با مضمون‌ متغیرها در کاتلین (Kotlin Variables) آشنا شدیم و دیدیم که چه‌طور می‌اقتدار با به کارگیری از val و var متغیرهایی بی آلایش البته قوی تمجید کرد. ادراک صحیح از متغیرهای کاتلین یکی محور‌های اصلی اپ‌نویسی در‌این گویش میباشد و نقش مهمی در تایپ کردن کدهای پاک، امن و قابل بسط داراست. البته این صرفا آغاز مسیر یادگیری اپ‌نویسی با کاتلین میباشد!