تفاوت const , final در تعریف ثابت ها

تعداد بازدید ها : 2,800 بازدید
 تفاوت const , final در تعریف ثابت ها

در زبان دارت جهت تعریف ثابت ها از دو عبارت const , final استفاده می شود . ولی در ابتدا باید گفت ثابت ها یعنی چه و این دو با هم چه تفاوتی دارند ؟

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

مقدار ثابت ها پس از تعریف و مقداردهی اولیه ، دیگر قابل تغییر نمی باشد .

تفاوت بین const , final در چیست ؟

در زبان دارت از کلمه کلیدی const جهت تعریف متغییرهای (variable) ثابت استفاده می شود در حالی که از کلمه کلید final جهت تعریف پراپرتی های (property) ثابت استفاده می شود . به عنوان مثال به قطعه کد زیر دقت نمایید :

import 'package:flutter/material.dart';

// ignore: camel_case_types
class myWidget extends StatelessWidget {
  final Widget myTitel;
  myWidget({this.myTitel});

  @override
  Widget build(BuildContext context) {
    return new Container(
      padding: const EdgeInsets.all(5.0),
      child: new Material(
        child: new Row(
          children: <Widget>[
            Icon(Icons.add),
            Expanded(
              child: myTitel,
            ),
            Icon(Icons.arrow_back)
          ],
        ),
      ),
    );
  }
}

همانطور که در مثال بالا مشاهده می کنید ، یک ویجت از نوع stateless ایجاد شده است و در خط ۵ پراپرتی به نام myTitel از نوع ثابت (final) تعریف شده و طبق تعریف به این پراپرتی فقط در متد سازنده کلاس می توان مقدار داد ، لذا در خط ۶ و در متد سازنده کلاس به این پراپرتی مقداردهی شده است .

می خوانم   ویجت Image

همچنین در خط ۱۱ مقداری که به padding داده شده است از نوع ثابت (const) تعریف شده است تا در طول برنامه به صورت ناخواسته مورد تغییر قرار نگیرد .

4+
محمدمجتبی جوارشکیان

محمدمجتبی جوارشکیان

من محمدمجتبی جوارشکیان ، کارشناس IT و فعال اجتماعی هستم و در حوزه معماری ، طراحی ، تحلیل گری ، مدلسازی و توسعه ی محیط های نرم افزاری فعالیت دارم . بسیار خوشحال می شوم من را از انتقادات ، پیشنهادات و نظرات خود مطلع فرمایید . آدرس ایمیل : info@javareshkian.ir

ارسال یک پاسخ

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

18 + 6 =