tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            آموزش lateinit در کاتلین

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • آموزش lateinit در کاتلین
            مفهوم Delegation در کاتلین چیست
            Delegation در کاتلین چیست ؟
            13 آبان 1398
            معرفی 8 افزونه کاربردی برای مرورگر گوگل کروم و فایرفاکس
            معرفی 8 افزونه کاربردی برای مرورگر گوگل کروم و فایرفاکس
            18 آبان 1398
            منتشر شده توسط مهندس داودی
            آموزش کلمه کلیدی lateinit در کاتلین

            آموزش کلمه کلیدی lateinit در کاتلین

            آموزش lateinit در کاتلین ، lateinit در کاتلین چیست ؟ کلمه کلیدی lateinit برای مقدار دهی کمی دیرتر متغیر هاست.دقت کنید که گفتیم کمی دیرتر ! بدین معنی که حتما باید مقدار دهی شود و بصورت پیش فرض مقدار null دارد و درصورتی که مقدار دهی نشود باعث دردسر و خطای برنامه خواهد شد !

            آموزش lateinit در کاتلین

            کلمه کلیدی lateinit زمانی مفید خواهد بود که یک مقدار اجازه تعریف شدن با مقدار null را ندارد اما برنامه نویس مطمئن است زمان استفاده از این متغیر ، متغیر null نیست و حتما مقدار دارد اما با این حال چک کردن متغیر جهت null‌ نبودن الزامی ست !

            موارد استفاده lateinit در کاتلین

            در موارد زیر کلمه کلیدی lateinit بشدت کار آمد خواهد بود :

            • زمان استفاده در اندروید : متغیر هایی که در متدهای چرخه حیات یا lifecycle مقدار دهی میشوند
            • زمان استفاده در Dagger دگر برای DI (Dependency Injection) :‌ متغیرهای تزریق شده درون کلاس
            • خارج از کلاس مقداردهی می شوند و بطور مستقل درون سازنده ها یا constructor ها هستند.
            • کانفیگ unit test : متغیر های محیط تست‌ test در annotation یا حاشیه نوشت @Before درون متد مقدار دهی میشوند.

            دستور lateinit همچنین در زبان swift برای iOS هم استفاده میشود اما به صورت : var book: Book!

            پیش نیازهای استفاده از کلمه کلیدی lateinit

            برای استفاده از دستور lateinit باید پیش نیاز های زیر را رعایت کنید:

            • متغیر باید با دستور var تعریف شود و نه val.
            • پراپرتی میتواند درون بدنه کلاس تعریف شود.
            • مقداردهی اولیه مجاز نیست.
            • متغیر تنها میتواند از انواع non-null باشد.

            زمان استفاده از دستور lateinit در پس زمینه چه اتفاقی رخ میدهد؟

            شاید فکر کنید دستور lateinit کار خارق العاده و عجیبی انجام میدهد اما درواقع چنین نیست ، بیایید نگاهی به دستور دیکامپایل شده lateinit بیاندازیم.دستور زیر را در کاتلین مینویسیم:

             lateinit var book: Book
            

            همچنین بخوانید: تعریف متغیر در کاتلین

            و درواقع به دستور زیر ترجمه میشود:

             @NotNull
             public Book book;
            @NotNull
             public final Book getBook() {
               Book var10000 = this.book;
               if(this.book == null) {
                 Intrinsics.throwUninitializedPropertyAccessException("book");
               }
               return var10000;
             }
            public final void setBook(@NotNull Book var1) {
               Intrinsics.checkParameterIsNotNull(var1, "");
               this.book = var1;
             }
            

            اما اگر قبل از مقداردهی یک متغیر از نوع lateinit از آن استفاده کنیم چه اتفاقی رخ میدهد؟

            در ابتدای پست گفته شد که حتما باید متغیر lateinit را مقداردهی کرد و حتی زمان استفاده شرطی جهت null نبودن ذکر کرد ، اما اگر ما از متغیر lateinit قبل از مقداردهی استفاده کنیم برای مثال از متغیر زیر قبل از مقداردهی اولیه استفاده کنیم:

             lateinit var book: Book
            

            همچنین بخوانید: Delegation در کاتلین چیست ؟

            با خطای RunTimeException زیر مواجه میشویم:

            kotlin.UninitializedPropertyAccessException: lateinit property book has not been initialized

            اما خبر خوب
            از کاتلین 1.2 به بالا میتوانیم با دستور .isInitialized متغیر تعریف شده با دستور lateinit را چک کنیم که آیا مقدار دهی شده یا خیر (برای جلوگیری از خطای RunTime )

            امیدوارم این آموزش برای شما مفید بوده باشد.

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            1 Comment

            1. f.n گفت:
              25 فروردین 1399 در 16:31

              سلام ممنون از توضیحات، بهم کمک کرد

              پاسخ

            دیدگاهتان را بنویسید لغو پاسخ

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

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج