0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

dart语言的变量声明与初始化

CHANBAEK 来源:myfreax 作者:myfreax 2022-12-08 16:47 次阅读

变量是每一们语言的基础,在Dart中所有变量都是对象,并且都有一个初始化的值null。

虽然在Dart中的变量的类型声明的是可选的,但是Dart建议在变量使用类型声明。

在本教程,我们将说明如何dart语言的变量声明与初始化,以及变量的默认值。

变量声明与初始化

Dart 变量存储的是引用,代码var name = 'Bob';name变量引用的是一个 String对象 值是Bob

这个name变量会被Dart 类型系统推断为String,如果你不确定的变量的类型,你也可以将变量的类型指定为Object或者dynamic类型。

另一种选择为变量是显式声明类型,这是Dart 推荐的方式变量声明和初始化的方式。

var name = 'Bob';
dynamic name = 'Bob';
String name = 'Bob';

Dart 类型注释是可选的,这里的类型注释,可以是其它语言类型声明或者类型定义。如果你是没有开发经验的新手,可以不必正确理解以下内容。

如果省略类型注释,Dart 会尝试根据上下文推断类型。有时它没有足够的信息来推断出正确类型。

当发生这种情况时,Dart 有时会报告错误,但通常会声明dynamic,这个过程通常称为类型隐式转换。隐式转换为dynamic使代码看起来是推断是正确且安全的。

但实际完全禁用了类型检查。下面的规则在推断失败时要求指定类型来避免这种情况。

类型推断是一种强大的工具,可以让您省去编写无趣的类型工作。它使读者的注意力集中在代码本身的行为上。

显式类型也是健壮、可维护代码的关键部分。它们定义API的静态规范并创建边界以记录和强制允许哪些类型的值允许的。

当然,类型推断不是魔法。有时推理成功并选择了一种类型,但它可能不是您想要的类型。

常见的情况是从变量的初始化中推断出过于精确的类型。而您又打算稍后将其他类型的值分配给变量,在这种情况下,您必须显式地声明类型。

变量默认值

未初始化的变量都有一个初始值null,如果你没有选择null空安全,那么每个变量都有一个可以为null类型。

即使在初始化变量类型指定类型为数值,也是初始化为null值。因为在Dart中一切都是对象。

如果开启null安全,则必须在声明变量时初始化变量的值。但在Dart 2.1.2添加late修改器允许在开启null安全的情况预先声明变量。

late修改器通常用于预先初始化不可为空的变量。惰性初始化一个变量。

int lineCount;
int lineCount = 0;
late String description;

Final 与 const

如果你一直不打算改变变量,则可以将变量声明为final或者constfinal变量只可以赋值一次。

常量变量是编译时的常量,也就是即隐式的finalfinal在类中使用之前必须被初始化。

const关键字不仅用于声明常量变量,例如代码const baz = [];。您还可以使用它来创建常量值,例如代码var foo = const [];,以及声明创建常量值的构造函数。

final name = 'Bob'; // 没有类型声明
final String nickname = 'Bobby';

var foo = const [];
final bar = const [];
const baz = []; // 相当于 const []

您可以改变不是finalconst变量的值,即使变量有一个const值。

例如代码var foo = const [];不是一个常量变量但它具有常量值const [];。因此你可以修改变量foo的值。

但是如果你尝试修改常量变量的值,Dart 将会抛出静态分析错误Error: Constant variables can't be assigned a value。

例如代码const baz = [];,假如你尝试修改常量baz的值,运行代码baz = [42];,Dart将会抛出错误。

结论

至此,你已经理解Dart 变量的初始化,变量的默认值,变量在开启null空安全时必须初始化变量,或者使用late修改器进行声明再初始化,最后理解常量变量,常量值以及final关键词。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 变量
    +关注

    关注

    0

    文章

    596

    浏览量

    28112
  • 初始化
    +关注

    关注

    0

    文章

    48

    浏览量

    11629
  • Dart
    +关注

    关注

    0

    文章

    9

    浏览量

    1727
收藏 人收藏

    评论

    相关推荐

    字符型、指针型等变量该如何初始化

    在敲代码的时候,我们会给变量一个初始值,以防止因为编译器的原因造成变量初始值的不确定性。对于数值类型的变量往往
    发表于 09-23 11:50 1958次阅读

    C语言中未初始化的局部变量到底是多少

    C语言中,未初始化的局部变量到底是多少?
    发表于 10-21 14:42 1476次阅读

    使用SEGGER Embedded Studio编译器发现变量无法自动初始化

    使用SEGGER Embedded Studio编译器发现变量无法自动初始化, 例如声明静态变量static uint8_t i = 0;这种写法i成了静态
    发表于 01-11 14:21

    c语言初始化变量

    C语言中,未初始化的局部变量到底是多少?答案往往是:与编译器有关。可能但不保证初始化为0。未确定。 总之,全部都是些一本正经的形而上答案,这很令人讨厌。 其实,这个问题本身就是错误的问
    发表于 03-29 09:25

    【原创】看完这篇,轻松弄懂STM32 C语言变量的定义和初始化

    `作者:张角老师(张飞实战电子高级工程师)我们今天探讨C语言变量的定义和初始化。那么我们首先要明确三个问题。第一,我们要明白什么是变量,或者为什么C
    发表于 07-19 11:40

    ADC初始化函数声明

    void MX_ADC1_Init(void){ADC_ChannelConfTypeDef sConfig={0};//初始化函数声明/** Common config
    发表于 08-11 07:51

    【原创分享】变量初始化技巧

    由于在嵌入式系统中必须考虑程序规模的问题,因此,对程序中的变量初始化也需要进行慎重的考虑。在C语言中,基本数据结构(字符型、整型)的初始化相对简单;数组、结构体属于C
    发表于 09-08 15:28

    变量初始化的基本原则

    一、变量初始化变量初始化的基本原则为:可综合代码中完成内部变量初始化,Testbench中完成
    发表于 01-19 07:07

    qboot跳转APP,APP声明全局变量时无法初始化

    1、程序添加了kawaii_mqtt软件包2、声明全局变量时进行初始化,程序无法跳转3、声明全局变量时不
    发表于 03-06 10:32

    c语言二维数组如何初始化为0

    c语言二维数组如何初始化: 有两种方法:1.在定义时可以直接赋值来初始化2.在定义后可以为其元素一个个来赋值。
    发表于 11-16 09:43 4w次阅读
    c<b class='flag-5'>语言</b>二维数组如何<b class='flag-5'>初始化</b>为0

    你知道C之变量初始化的重要性?

    C之变量初始化的重要性
    发表于 05-15 16:46 780次阅读
    你知道C之<b class='flag-5'>变量</b><b class='flag-5'>初始化</b>的重要性?

    在51平台下初始化文件的引入导致全局变量无法初始化的问题如何解决

    本文档的主要内容详细介绍的是在51平台下初始化文件的引入导致全局变量无法初始化的问题如何解决。
    发表于 08-20 17:31 0次下载
    在51平台下<b class='flag-5'>初始化</b>文件的引入导致全局<b class='flag-5'>变量</b>无法<b class='flag-5'>初始化</b>的问题如何解决

    EE-88:使用21xx编译器初始化C语言中的变量

    EE-88:使用21xx编译器初始化C语言中的变量
    发表于 05-19 21:08 1次下载
    EE-88:使用21xx编译器<b class='flag-5'>初始化</b>C<b class='flag-5'>语言</b>中的<b class='flag-5'>变量</b>

    C语言编程时,各种类型的变量该如何初始化

    C语言编程时,各种类型的变量该如何初始化? 在C语言中,每个变量都需要在使用之前进行初始化
    的头像 发表于 12-07 13:53 589次阅读

    字符型、指针型等变量等该如何初始化

     对于数值类型的变量往往初始化为0,但对于其他类型的变量,如字符型、指针型等变量等该如何初始化呢?
    的头像 发表于 03-18 11:02 213次阅读