【Flutter】入门Dart语言:简单易懂的变量指南

news2024/11/13 11:18:31

文章目录

    • 一、概述
    • 二、详解
      • 1. 变量的声明
      • 2. 常量变量
      • 3.`late` 延迟初始化变量
      • 4. 变量的命名规则
    • 三、总结

一、概述

“不抱有希望的人生是毫无意义的。” —— 阿卜杜勒·阿齐兹

img

Dart中的变量是存储值的容器。它们可以是数字、字符串、布尔值或其他数据类型。变量在定义时必须指定类型,或者可以使用类型推断,Dart将根据初始值自动推断变量类型。

二、详解

1. 变量的声明

Dart 中变量的定义和初始化有三种方法:使用 var 关键字,使用数据类型,使用 dynamic 关键字。

  1. 使用 var 关键字定义变量:
var personName = 'John Doe';
var personAge = 25;

上面的代码中,我们使用 var 关键字定义了两个变量 personNamepersonAge,分别存储字符串 ‘John Doe’ 和整数 25。Dart 会根据变量赋的值自动推断出该变量的类型,在这里 personName 为字符串类型,personAge 为整数类型。

请注意,使用 var 关键字定义的变量的类型一旦确定,不能再改变,例如不能将字符串变量 personName 赋值为整数,否则会得到错误提示:

"A value of type ‘int’ can’t be assigned to a variable of type ‘ String '”

  1. 使用数据类型定义变量:
String personName = 'John Doe';
int personAge = 25;


上面的代码中,我们使用数据类型显式定义了两个变量,分别为字符串类型的 personName 和整数类型的 personAge。与使用 var 关键字定义变量类似,Dart 也不允许在之后更改变量的类型。

  1. 使用 dynamic 关键字定义变量:

使用 dynamic 关键字定义变量,表示该变量可以存储任何类型的数据。比如:

dynamic myVar = "Hello World";
myVar = 100; 
myVar = true; 

但是,除非必要,否则不推荐使用 dynamic 类型。因为,这样做会导致代码难以维护,特别是在大型应用程序中。在 Dart 中,默认情况下,会根据存储的数据类型自动推断变量的类型,以使代码易于维护。

2. 常量变量

Dart 中的 final 和 const 两个关键字用于声明常量。

  1. final 关键字声明的变量只能被赋值一次,而且必须在声明时或构造函数中赋值。

例如:

final name = 'John Doe';
name = 'Jane Doe'; // Error: a final variable can only be set once.

  1. const 关键字声明的变量是编译时常量,它的值在编译时就已经确定。它是一种更严格的常量,只能用于声明编译时常量,不能用于声明运行时常量。

例如:

const pi = 3.14;
pi = 3.14159; // Error: a constant variable cannot be changed.

3.late 延迟初始化变量

late 关键字用于标识一个变量为延迟初始化变量。这意味着,变量的值在需要时才会被初始化,而不是在声明时立即初始化。

使用 late 关键字定义一个变量的语法如下:

late MyType myVariable;

例如:

late int x;

void main() {
  x = 10;
  print(x); // 10
}

因为变量是在需要时才初始化的,所以在使用前必须对其进行初始化,否则会抛出一个错误。

注意:不能对 late 变量使用 finalconst 关键字,因为它们在声明时必须立即初始化。

4. 变量的命名规则

Dart 中变量命名遵循以下规则:

  1. 变量名只能包含字母,数字,下划线和美元符号($)。
  2. 变量名不能以数字开头。
  3. 变量名区分大小写。
  4. 变量名不能与 Dart 中的保留字相同,例如 int、var、dynamic 等。
  5. 使用驼峰命名法,即把每个单词的首字母都大写,比如:firstName、lastName。

三、总结

这次我们学习了如何在Dart中定义变量,建议你结合之前提到的DartPad在线环境中学习掌握。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理 (1)

网络原理 文章目录1. 前言: 2. 应用层2.1 XML2.2 json2.3 protobuffer3. 传输层3.1 UDP3.1 TCP4. TCP 内部的工作机制 (重点)1. 确认应答 2.超时重传3. 连接管理3.1 建立联系 :三次握手3.2 断开连接 : 四次挥手4. 滑动窗口5. 流量…

长按power键,点击重启按钮,系统重启流程一

1.有可能会涉及到如下文件 2.文件流程

Spring基础总结(上)

Spring基础总结(上) 1. Spring 如何创建一个 Bean 对象 通过调用对象的无参构造方法创建一个新对象,然后通过依赖注入得到bean对象(默认单例)依赖注入这一步对新对象中添加了 Autowired 或者Resource 等注解的属性赋值,得到 Bean 对象,如下…

openOffice pdf.js spring boot 微信在线预览office pdf文件

下载openoffice 并安装//pdf.js 案例 https://mozilla.github.io/pdf.js/examples/index.html#interactive-examples//openoffice 连接不上 进入安装目录 cmd 运行以下命令 soffice -headless -accept"socket,host127.0.0.1,port8100;urp;" -nofirststartwizard<!…

技术管理之产品管理

一、产品相关概念 1.1 产品的定义 作为商品提供给市场&#xff0c;被人们使用和消费&#xff0c;并能满足人们某种需求的任何东西&#xff0c;包括有形的物品和无形的服务、组织、观念或者它们的组合&#xff1b;简单点产品就是解决某一类问题的东西。 1.2 产品思维 产品思…

安全研发人员能力模型窥探

能力 是一个比较抽象的概念&#xff0c;不同的行业、管理者、研发人员对能力的认知都会有差异。另外&#xff0c;作为研发团队的相应的职级定级、绩效考核的基础&#xff0c;一个“大家普遍认可”的能力的模型是非常重要的。这是比职级模型更高层的一个基本模型&#xff0c;所谓…

漏洞之S2-048 远程代码执行漏洞(CVE-2017-9791)

一、漏洞详情二、环境搭建1、使用vulhub搭建&#xff0c;搭建方法详见&#xff1a;https://blog.csdn.net/qq_32393893/article/details/129027549?spm1001.2014.3001.55012、切换到vulhub/struts2/s2-0483、启动容器 docker-compose up -d4、访问虚拟机IP:8080端口&#xff0…

智能家居项目(三)之框架设计及框架代码文件工程建立

目录 一、智能家居项目框架设计草图 二、框架代码文件工程建立 三、添加声音识别模块的串口读取功能 一、智能家居项目框架设计草图 代码思路讲解&#xff1a; 1、一个指令工厂&#xff0c;一个控制工厂&#xff0c;实际上就是通过链表链起来的数据。具体怎么链接起来&…

dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件,并启动容器访问

dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件&#xff0c;并启动容器访问简介centos7系统里面我准备的服务如下:5gsignplay-web静态文件内容如下:nginx.conf配置文件内容如下:Dockerfile内容如下:run.sh启动脚本内容如下:制作镜像并启动访问简介 通过用docker…

将SpringBoot项目部署到云服务器上面

将jar包部署到云服务器上面在项目中直接双击点击maven里面的package当控制台输出创建成功以后找到target目录下面打好的jar包然后找到jar包所在的文件目录&#xff0c;将该jar包放到服务器里面的apache-tomcat-8.5.82目录里面的webapps目录里面打开安全组开放访问端口服务器里面…

【2023进阶自动化测试第一步】什么是自动化测试基础?

01、自动化测试的定义 使用一种自动化测试工具来验证各种软件测试的需求&#xff0c;它包括测试活动的而管理与实施、测试脚本的开发与执行。 自动化测试只是策是工作的一部分&#xff0c;是对手工测试的一种补充&#xff1a;自动化测试决不能代替手工测试&#xff1b;多数情…

Word处理控件Aspose.Words功能演示:使用 Java 拆分 MS Word 文档

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c;API支持所有流行的Word处理文件…

ASE28N50-ASEMI高压N沟道MOS管ASE28N50

编辑-Z ASE28N50在TO-247封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为200mΩ&#xff0c;是一款N沟道高压MOS管。ASE28N50的最大脉冲正向电流ISM为110A&#xff0c;零栅极电压漏极电流(IDSS)为1uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE28N50功…

【实战场景二】如何设计一个分布式锁?

如何优雅的设计一个分布式锁&#xff1f;如何设计一个分布式锁&#xff1f;1、什么是分布式锁2、那么分布式锁&#xff0c;具备什么条件呢&#xff1f;3、设计分布式锁有哪些方式&#xff1f;3.1 利用redis实现分布式锁原理3.2 基于数据库做分布式锁3.3 基于zookeeper实现分布式…

L1-064 估值一亿的AI核心代码

以上图片来自新浪微博。 本题要求你实现一个稍微更值钱一点的 AI 英文问答程序&#xff0c;规则是&#xff1a; 无论用户说什么&#xff0c;首先把对方说的话在一行中原样打印出来&#xff1b;消除原文中多余空格&#xff1a;把相邻单词间的多个空格换成 1 个空格&#xff0c…

如何有效提升微信小程序的排名?

微信小程序排名提升的方法有很多&#xff0c;今天厦门巨神峰给大家分享几点&#xff1a; 1. 加强小程序的用户体验&#xff0c;提升用户满意度&#xff1b; 2. 加强小程序的口碑宣传&#xff0c;提升小程序的知名度&#xff1b; 3. 加强小程序的技术支持&#xff0c;提升小程…

血糖高不高,看皮肤也能知道

糖尿病是一种以高血糖为特征的代谢性疾病。长期存在的高血糖&#xff0c;导致各种组织&#xff0c;特别是眼、肾、心脏、血管、神经的慢性损害、功能障碍。很多人不知道&#xff0c;皮肤也会受到血糖影响。以下就是皮肤发出的警告&#xff1a;1.黑棘皮病&#xff1a;后脖颈、腋…

Docker安全防护与配置

author: aming email: jikcheng163.com title: Docker安全防护与配置 creation_date: 2023-02-08 12:26 Last modified date: 2023-02-08 14:09 tags: Docker安全防护与配置 File Folder with relative path: reading notes/doc remark: other: 本章背景知识 运行在容器内部的…

【C++修行之路】C/C++内存管理

文章目录程序区域内存划分C语言动态内存分配&#xff1a;new和delete&#xff1a;new、delete和malloc、free的区别:程序区域内存划分 C/C程序内存区域划分非常相似。 C语言动态内存分配&#xff1a; malloc、calloc、realloc都是C语言动态开辟内存的常用函数 其中 malloc 开…

【Mybatis源码解析】一级缓存和二级缓存源码解析

文章目录缓存使用缓存源码测试代码上一篇《【Mybatis源码解析】mapper实例化及执行流程源码分析》&#xff0c;主要讲解了Mybatis的基本原理一级执行的流程&#xff0c;这一章来讲一下Mybatis的两个缓存&#xff1a;一级缓存和二级缓存。 因为网上大部分都是使用xml配置的方式…