Null Safety
یک اختلال رایج در ارتباط لهجه های نرمافزار نویسی، دسترسی به عضوی از یک رفرنس null میباشد.
رفرنس تهی وقتی صورت میدهد که شما یک متغیر ابجکت را فارغ از دادن مقدار به آن اعلام میکنید، یا این که وقتی که به آن متغیر null تخصیص طراحی اپلیکیشن در مشهد می دهید.
زمانی اپ ایفا میگردد و همت مینماید به آن متغیر دسترسی پیدا نماید، نمیداند به کجا نگاه نماید، چون نیست.
مرسوم ترین فیض این میباشد که نرمافزار شما ناگهان متوقف میگردد و از فعالیت می افتد.
ممکن میباشد با NullPointerException جاوا آشنا باشید.
یکی گران قدرترین خصوصیتهای کاتلین این میباشد که غرض سیستم type آن حذف NullPointerException میباشد، هدفی که تحت عنوان void safety. شناخته میگردد.
در Kotlin، دلایل احتمالی NullPointerException عبارتند از:
کد فرنگی جاوا
یک فراخوان explicit برای NullPointerException() (NPE).
به کارگیری از !! operator .
یک lateinit var پیش از دسترسی مقداردهی نخستین نشده میباشد.
Nullable Types and Non-Null Types
کاتلین دارنده اشکال Nullable و غیر Null میباشد.
در شرایطی که متغیری را تحت عنوان nullable اعلام نکنید، نمی توانید به آن مقدار null تخصیص دهید.
کامپایلر این را انجام مینماید و ضایع کردن ناخواسته اپلیکیشن شمارا دشوارخیس مینماید.
برخلاف جاوا، تمامی متغیرها می بایست در نقطه اعلان، در تولید کننده یا این که init مقداردهی اول شوند، به جز lateinit var.
برای اعلام یک متغیر تحت عنوان nullable، بایستی یک ? به نوع آن در نقطه اعلان، همانگونه که درین اعلان shareActionProvider میبینید قرار گیرد:
private var shareActionProvider: ShareActionProvider? = null
Late Initialization Variables
Late Initialization Variables متغیر را پیش از دسترسی به آن مقداردهی نخستین می نمایند.
این یک کدام از معمول ترین علل NPE میباشد.
برای اعلان یک متغیر فارغ از مقداردهی اول آن در خالق یا این که بلوک init، lateinit را پیشنویس نمایید:
class SomeClass {
private lateinit var myName: String
fun methodThatAccesses() {
myName.trim()
}
fun methodThatAssigns() {
myName = "initialize the variables!"
}
}
حالا، درصورتیکه آغاز MethodThatAccesses را صدا بزنید (فراخوانی نمایید)، اپلیکیشن از شغل می افتد.
شما می بایست myName را پیش از دسترسی به آن مقداردهی اول نمائید و این عمل را نکردید.
از طرف دیگر، درصورتیکه آغاز متدThatAssigns را فراخوانی فرمائید، هیچ فساد وجود نخواهد داشت.
این میتواند وقتی موثر باشد که شما چیزی دارید که مطمئناً میدانید به موقع آن را مقداردهی نخستین میکنید ولی نمی توانید آن را در تولید کننده یا این که در بلوک init اجرا دهید.
در اندروید، views به طریق onCreate() تخصیص داده میشوند.
درصورتیکه به یکیاز views برای عضویت در کلاس نیاز دارید و نمیخواهید در همگی جا با nullability سروکار داشته باشید، منطقی میباشد که آن را lateinit اعلام فرمائید.
Safe Calls
برای دسترسی به یک خصوصیت یا این که روال روی یک متغیر nullable در جاوا، آغاز می بایست یک رسیدگی null اجرا دهید.
میتوانید این را در DetailActivity.java مشاهده کنید:
if (shareActionProvider != null) {
shareActionProvider.setShareIntent(shareIntent);
}
با Kotlin میتوانید عبارت فوق را با استعمال از safe call operator ? معمولی فرمائید.
خصوصیت یا این که مشی تنها وقتی فراخوانی میشود که متغیر nullable null نباشد.
shareActionProvider?.setShareIntent(shareIntent)
در اینجا، setShareIntent صرفا وقتی فراخوانی می گردد که خصوصیت shareActionProvider تهی نباشد.
نوع Inference
کاتلین همینطور از inference تامین می نماید.
این بدان معنا میباشد که کامپایلر میتواند گونه های متغیرها را از initializer ، inference نماید.
در شکل میل یا این که درصورتیکه کامپایلر نتواند آن را inference نماید، همچنان میتوانید نوع را اعلام فرمائید.
از جمله، اشکال متغیرهای imageUrlBase و imageURL از مقداردهی نخستین آن ها استنباط می گردند.
private val imageUrlBase = "http://covers.openlibrary.org/b/id/"
private var imageURL = ""
کامپایلر نوع استنباط گردیده هر متغیر را، هریک تحت عنوان یک حرفه، ردیابی می نماید.
هر پاره ای که بعد از آن به متغیر تخصیص داده می گردد نیز بایستی از آن نوع فن باشد.
برای اعداد، بایستی نوع متغیر را برای کامپایلر مشخص و معلوم نمایید.
var longVar = 0L
var floatVar = 0.0f
var doubleVar = 0.0
var integerVar = 0
Converter جاوا به کاتلین
Converter شایسته ترین ابزاری میباشد که تا به امروز برای سهولت جابجایی از یک گویش نرم افزار نویسی به گویش دیگر ایجاد شده است.
از آنجایی که Kotlin بوسیله گسترش دهندگان برای بسط دهندگان تشکیلشده بود، آنان می دانستند که یوزرها چه زبانی را میخواهند.
این ابزارها به عبارتی چیزی میباشد که مجموعه گسترشدهنده گویش برای جابجایی خویش از جاوا به کاتلین استعمال کردند.
آن را آزمون نمائید. با تبدیل پوشه DetailActivity.java به Kotlin، از این خصوصیت sanity-saving feature for a test drive به کار گیری فرمایید.
کلاس DetailActivity.java را گشوده فرمایید و به Code ▸ Convert Java File to Kotlin File بروید یا این که از میانبر Command + Shift + Option + K به کار گیری فرمائید:
یک notice مانند shown اخذ خواهید کرد، روی OK کلیک فرمائید.
این پوشه جاوا را با یک Kotlin جایگزین می نماید.
با این اکنون، این اخطار صرفا در شکل ضرورت نشان داده میشود، براین اساس مدام چشم به راه آن نباشید.
Null Safety
یک اختلال رایج در ارتباط لهجه های نرمافزار نویسی، دسترسی به عضوی از یک رفرنس null میباشد.
رفرنس تهی وقتی صورت میدهد که شما یک متغیر ابجکت را فارغ از دادن مقدار به آن اعلام میکنید، یا این که وقتی که به آن متغیر null تخصیص طراحی اپلیکیشن در مشهد می دهید.
زمانی اپ ایفا میگردد و همت مینماید به آن متغیر دسترسی پیدا نماید، نمیداند به کجا نگاه نماید، چون نیست.
مرسوم ترین فیض این میباشد که نرمافزار شما ناگهان متوقف میگردد و از فعالیت می افتد.
ممکن میباشد با NullPointerException جاوا آشنا باشید.
یکی گران قدرترین خصوصیتهای کاتلین این میباشد که غرض سیستم type آن حذف NullPointerException میباشد، هدفی که تحت عنوان void safety. شناخته میگردد.
در Kotlin، دلایل احتمالی NullPointerException عبارتند از:
کد فرنگی جاوا
یک فراخوان explicit برای NullPointerException() (NPE).
به کارگیری از !! operator .
یک lateinit var پیش از دسترسی مقداردهی نخستین نشده میباشد.
Nullable Types and Non-Null Types
کاتلین دارنده اشکال Nullable و غیر Null میباشد.
در شرایطی که متغیری را تحت عنوان nullable اعلام نکنید، نمی توانید به آن مقدار null تخصیص دهید.
کامپایلر این را انجام مینماید و ضایع کردن ناخواسته اپلیکیشن شمارا دشوارخیس مینماید.
برخلاف جاوا، تمامی متغیرها می بایست در نقطه اعلان، در تولید کننده یا این که init مقداردهی اول شوند، به جز lateinit var.
برای اعلام یک متغیر تحت عنوان nullable، بایستی یک ? به نوع آن در نقطه اعلان، همانگونه که درین اعلان shareActionProvider میبینید قرار گیرد:
private var shareActionProvider: ShareActionProvider? = null
Late Initialization Variables
Late Initialization Variables متغیر را پیش از دسترسی به آن مقداردهی نخستین می نمایند.
این یک کدام از معمول ترین علل NPE میباشد.
برای اعلان یک متغیر فارغ از مقداردهی اول آن در خالق یا این که بلوک init، lateinit را پیشنویس نمایید:
class SomeClass {
private lateinit var myName: String
fun methodThatAccesses() {
myName.trim()
}
fun methodThatAssigns() {
myName = "initialize the variables!"
}
}
حالا، درصورتیکه آغاز MethodThatAccesses را صدا بزنید (فراخوانی نمایید)، اپلیکیشن از شغل می افتد.
شما می بایست myName را پیش از دسترسی به آن مقداردهی اول نمائید و این عمل را نکردید.
از طرف دیگر، درصورتیکه آغاز متدThatAssigns را فراخوانی فرمائید، هیچ فساد وجود نخواهد داشت.
این میتواند وقتی موثر باشد که شما چیزی دارید که مطمئناً میدانید به موقع آن را مقداردهی نخستین میکنید ولی نمی توانید آن را در تولید کننده یا این که در بلوک init اجرا دهید.
در اندروید، views به طریق onCreate() تخصیص داده میشوند.
درصورتیکه به یکیاز views برای عضویت در کلاس نیاز دارید و نمیخواهید در همگی جا با nullability سروکار داشته باشید، منطقی میباشد که آن را lateinit اعلام فرمائید.
Safe Calls
برای دسترسی به یک خصوصیت یا این که روال روی یک متغیر nullable در جاوا، آغاز می بایست یک رسیدگی null اجرا دهید.
میتوانید این را در DetailActivity.java مشاهده کنید:
if (shareActionProvider != null) {
shareActionProvider.setShareIntent(shareIntent);
}
با Kotlin میتوانید عبارت فوق را با استعمال از safe call operator ? معمولی فرمائید.
خصوصیت یا این که مشی تنها وقتی فراخوانی میشود که متغیر nullable null نباشد.
shareActionProvider?.setShareIntent(shareIntent)
در اینجا، setShareIntent صرفا وقتی فراخوانی می گردد که خصوصیت shareActionProvider تهی نباشد.
نوع Inference
کاتلین همینطور از inference تامین می نماید.
این بدان معنا میباشد که کامپایلر میتواند گونه های متغیرها را از initializer ، inference نماید.
در شکل میل یا این که درصورتیکه کامپایلر نتواند آن را inference نماید، همچنان میتوانید نوع را اعلام فرمائید.
از جمله، اشکال متغیرهای imageUrlBase و imageURL از مقداردهی نخستین آن ها استنباط می گردند.
private val imageUrlBase = "http://covers.openlibrary.org/b/id/"
private var imageURL = ""
کامپایلر نوع استنباط گردیده هر متغیر را، هریک تحت عنوان یک حرفه، ردیابی می نماید.
هر پاره ای که بعد از آن به متغیر تخصیص داده می گردد نیز بایستی از آن نوع فن باشد.
برای اعداد، بایستی نوع متغیر را برای کامپایلر مشخص و معلوم نمایید.
var longVar = 0L
var floatVar = 0.0f
var doubleVar = 0.0
var integerVar = 0
Converter جاوا به کاتلین
Converter شایسته ترین ابزاری میباشد که تا به امروز برای سهولت جابجایی از یک گویش نرم افزار نویسی به گویش دیگر ایجاد شده است.
از آنجایی که Kotlin بوسیله گسترش دهندگان برای بسط دهندگان تشکیلشده بود، آنان می دانستند که یوزرها چه زبانی را میخواهند.
این ابزارها به عبارتی چیزی میباشد که مجموعه گسترشدهنده گویش برای جابجایی خویش از جاوا به کاتلین استعمال کردند.
آن را آزمون نمائید. با تبدیل پوشه DetailActivity.java به Kotlin، از این خصوصیت sanity-saving feature for a test drive به کار گیری فرمایید.
کلاس DetailActivity.java را گشوده فرمایید و به Code ▸ Convert Java File to Kotlin File بروید یا این که از میانبر Command + Shift + Option + K به کار گیری فرمائید:
یک notice مانند shown اخذ خواهید کرد، روی OK کلیک فرمائید.
این پوشه جاوا را با یک Kotlin جایگزین می نماید.
با این اکنون، این اخطار صرفا در شکل ضرورت نشان داده میشود، براین اساس مدام چشم به راه آن نباشید.

راهکارهای کاهش CPC در کمپینها