• Dart(3)-常量


    一、常量声明

    const

    使用const 定义的常量是不可变的, 需要定义并赋值,常量定义的集合,都是只读的,特性是所赋值会传递到子元素,在内存中会复用相同内容对象,const特性与ES6中的类似

    1. const PI = 3.1454567;
    2. const ARY = [1,2,3,4,5];
    3. var ARRY = const[1,2,3,5];

    final

    使用final 定义的变量, 只能赋值一次;并且在运行时赋值,所谓运行时,就是当程序执行到这块代码时才会对final修饰的变量进行赋值。可以是对象、字符串、数字等

    final SCORE = 123; 

    二、与Java的比较

    java中定义常量:

    final static float DEX = 0.5;

    如果常量定义的是基本数据类型(int、double),在dart中不需要定义变量的类型,dart会根据赋值的情况推导类型,如果加上var就会报错。

    三、const与final的区别

    1. const a = [1,2,3,4,5];
    2. a[1] = 10;
    3. print(a[1]);

    如上代码运行会直接报错。上面一中说到赋值会传递到子元素,就是指这个。而final,修饰的则可以直接修改。

    Unhandled exception:
    Unsupported operation: Cannot modify an unmodifiable list
    #0      UnmodifiableListMixin.[]= (dart:_internal/list.dart:90:5)
    #1      main (package:flutter_demo/dartEx.dart:39:4)
    #2      _startIsolate. (dart:isolate-patch/isolate_patch.dart:301:19)
    #3      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

    四、比较

    1.  const a = [1,2,3,4];
    2.  var b = const[1,2,3,4];
    3.  print(identical(a, b)); //true
    4. const a = [1,2,3,4];
    5. const b = [1,2,3,4];
    6. print(identical(a, b)); //true

    五、总结

    const和final在dart中不可以修饰类

    const和final声明的类型均可省略

    const和final初始化不能再赋值

    const和final都不能和var同时使用

    类级别的常量使用static const

    创建相同的const对象在内存中会被共用

    const的不变性是可传递的(传递至集合的子元素),而final则不会

    const常量需要使用const常量进行定义,比如如下方式就不可

    用var定义的const数组是可以重新赋值,而const和final定义的就不行,如下:

    const定义时,必须是编译时常量,比如const datetime = DateTime.now();这么写就会报错

    使用const定义一个数组时,后面的const可以省略,比如

     const a = const[1,2,3];
     const b = [1,2,3];
  • 相关阅读:
    数字孪生在灌区信息中的应用
    【maven】手动指定jar推送
    学生选课系统 前后端分离 vue springboot
    开学要考IB经济怎么办?
    基于Echarts实现可视化数据大屏机械设备监测大数据统计平台HTML页面
    无心剑中译狄金森《灵魂择其伴侣》
    C 和 C++ 可变参数介绍
    靶场通关记录
    第7讲:Python中整数序列Range函数的概念以及使用
    折扇-第10届蓝桥杯Scratch省赛真题第4题
  • 原文地址:https://blog.csdn.net/life491249957/article/details/126022324