Dart在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
测试dart_eval 发布于:2024-11-27 16:11 dart实现的最大椎建立,还有bug 发布于:2024-06-10 23:06 Here is a Flutter implementation of the UI presented in the image you provided. This includes a user profile screen with elements like an avatar, user ID, and buttons for interaction. 发布于:2024-05-16 13:43 阿瓦达我打我打我的 发布于:2024-05-10 14:48 测试用的要什么简介 发布于:2024-04-10 14:20 数组随机数 发布于:2024-02-25 15:24 测试dart特性代码 发布于:2024-02-21 15:36 判断坐标点是否在围栏区域 发布于:2023-11-18 12:02 测试根据数值分组 发布于:2023-11-04 23:05 dart 快速排序 发布于:2024-06-10 19:10 二叉树中序遍历 发布于:2023-04-13 16:12 寻找两个顺序数组的中位数 发布于:2023-03-17 17:47 卡尔曼滤波 发布于:2023-03-02 18:23 my dart training 发布于:2023-02-21 18:35 Dart实现RFID标签写入 发布于:2023-02-01 12:15 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1] 提示: 每个链表中的节点数在范围 [1, 100] 内 0 <= Node.val <= 9 题目数据保证列表表示的数字不含前导零 发布于:2022-12-12 15:43 迷宫图测试功能 发布于:2022-03-16 09:33 Dart Test 发布于:2022-03-07 15:38 Dart 生成过去30天的日期,无论是什么时候 发布于:2021-11-29 10:41 dart学习 发布于:2020-10-10 18:59 dart学习 发布于:2020-10-10 18:59 dart学习 发布于:2020-09-29 14:36 [更多]
显示目录

声明变量与默认值



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

声明变量与默认值

变量是一个引用,在Dart中一旦变量的类型被确定,就不能再被更改类型

Dart中的一切变量皆是对象,所有的变量都指向一个对象。

声明变量

声明可以有以下两种方式,一种是不指定类型,使用var关键字

 var name = 'Bob';

另一种则是明确指定类型(Optional types)

String name = 'Bob';

明确声明(Explicit)

明确声明变量方式 ,格式:变量类型 变量名称 = 赋值

代码示例如下:

 String name = 'wang';
 int age = 18;
 double height = 1.88;
 print('${name}, ${age}, ${height}');
 // 注意事项: 定义的变量可以修改值, 但是不能赋值其他类型
 String content = 'Hello Dart';
 content = 'Hello World'; // 正确的
 // content = 111; // 错误的, 将一个int值赋值给一个String变量

类型推导(Type Inference)

类型推导声明变量的方式, 格式: var/dynamic/const/final 变量名称 = 赋值

var的使用

var的使用示例:

var name = 'wang';
// runtimeType用于获取变量当前的类型
print(name.runtimeType); // String

变量仅存储对象引用,这里的变量是name存储了一个String类型的对象引用。 wang是这个String类型对象的值,name变量的类型被推断为String。

dynamic的使用

  dynamic name = 'wang';
  print(name2.runtimeType); // String
  name = 18;
  print(name2.runtimeType); // int

final const的使用

final和const都是用于定义常量的, 定义之后值都不可以修改

  final name = 'wang';
  name = 'james'; // 错误

  const age = 18;
  age = 20; // 错误

const在赋值时, 赋值的内容必须是在编译期间就确定下来的

final在赋值时, 可以动态获取 比如赋值一个函数

代码示例如下:

//  const是不可以赋值为DateTime.now()  
const time = DateTime.now(); // 错误  因为要执行函数才能获取到值

// final一旦被赋值后就有确定的结果, 不会再次赋值
final time = DateTime.now();
print(time);
sleep(Duration(seconds: 5));
print(time); // 两次time值相同

ps: 实例变量可以是final 类型但不能是const类型。 必须在构造函数体执行之前初始化 final 实例变量 。在变量声明中,参数构造函数中或构造函数的初始化列表中进行初始化。

虽然有类型推导两种实现效果是一样的,但在函数内的本地变量尽量使用var声明。

变量类型不明确的情况下,可以使用dynamic关键字

dynamic name = 'Bob';

默认值:

默认值未初始化的变量是 null。即便是数字类型的变量默认值也是 null,因为 Dart 中的一切都是对象,数字类型也不例外。

int lineCount;
assert(lineCount == null);

提示: 生产环境代码中 assert() 函数不会被调用,而会被忽略。 在开发过程中, assert(condition) 会在非 true 的条件下抛出异常。

Final 和 Const:

final 或 const是使用过程中从来不会被修改的变量,Final 变量的值只能被设置一次;而 Const 变量在编译时就已经固定 (Const 变量 是隐式 Final 的类型) 。最高级 final 变量或类变量第一次使用时会被初始化。

提示: 实例变量可以是 final 类型但不能是 const 类型。 必须在构造函数体执行之前初始化 final 实例变量 —— 在变量声明中,参数构造函数中或构造函数的初始化列表中进行初始化。

设置创建一个 Final 变量:

final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';

final 不能被修改:

name = 'Alice'; // Error: 一个 final 变量只能被设置一次。

在编译时就固定变量的值,可以使用 const 类型变量。 如果 Const 变量是类级别的,需要标记为 static const。 在这些地方可以使用在编译时就已经固定不变的值,字面量的数字和字符串, 固定的变量,或者是用于计算的固定数字:

const bar = 1000000; // 压力单位 (dynes/cm2)
const double atm = 1.01325 * bar; // 标准气压

Const 关键字除了用于声明常量变量之外。 还能用来创建常量值跟声明创建常量值的构造函数。任何变量都可以拥有常量值。

var foo = const [];
final bar = const [];
const baz = []; // Equivalent to `const []`

const 的初始化表达式中 const 可以被省略。

即使曾经引用过 const 值,非 Final,非 const 的变量也是可以被修改的。


foo = [1, 2, 3]; // 曾经引用过 const [] 常量值。

Const 变量的值不能被修改:

baz = [42]; // Error: 常量变量不能赋值修改。
由JSRUN为你提供的Dart在线运行、在线编译工具
        JSRUN提供的Dart 在线运行,Dart 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout