美文网首页
5、Dart 变量

5、Dart 变量

作者: Eyes_cc | 来源:发表于2022-07-19 16:10 被阅读0次

详情请看 Dart 编程语言概览

一、目录

  • 变量
  • 内建类型(num、String、bool、List、Map、Set、Rune、Symbol、dynamic)
  • 函数Function
  • 闭包(定义在函数里面的函数就是闭包,闭包也是一个对象。它可以访问外部函数的局部变量。)
  • 运算符
  • 类(与其他语言一样,Dart 为类概念提供了内置支持。)
  • if语句
  • 循环操作
  • 泛型

二、关键点

  • vardynamic 或者具体的类型来声明一个变量,它们的区别是什么?
  • runtimeType用于获取变量当前的类型.
  • finalconst来声明一个常量.
  • finalconst 有什么区别呢?
  • const放在赋值语句的右边,可以共享对象,提高性能。

一、变量(用 vardynamic 或者具体的类型来声明一个变量)

  • 变量仅存储对象的引用默认值。
  • 未初始化的变量的值都是 null。

Dart 是类型安全的语言,所有类型都是对象类型,都继承自顶层类型 Object,因此一切变量的值都是类的实例,即对象;甚至数字、布尔值、函数和 null 也都是继承自 Object 的对象。

1、 使用var 声明变量(类型推导)。

当使用 var 定义变量时,表示类型是交由编译器推断决定的。

  • 声明变量的时候如果没有赋值,那么值为null,并且之后可以赋不同的类型值。
  • 声明变量的时候如果已经赋值,那么变量的类型就确定了。

如:
var a; 方式一
var a = 100; 方式二

  • runtimeType用于获取变量当前的类型
var name = 'coderwhy';
name = 'kobe';
print(name.runtimeType); // String
✅
void main() {
  var a; // 声明变量的时候如果没有赋值,那么值为null,并且之后可以赋不同的类型值。
  a = "hello word";
  print(a);
  a = 10; // 可以赋不同的类型值
  print(a + 10);
}

❌
void main() {
  var a = "hello word"; // 声明变量的时候如果已经赋值,那么变量的类型就确定了。
  print(a);
  a = 10; // 变量a的类型是String,不能将num类型的值赋给它
  print(a + 10);
}
: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
lib/main.dart:7
  a = 10;
      ^
2、 使用dynamic 声明变量。

声明变量的时候不管有没有赋值,之后都可以赋不同的类型值。因为会带来潜在的危险,在开发中, 通常情况下不使用dynamic,。

  • 声明变量的时候不管有没有赋值,之后都可以赋不同的类型值。

如:
dynamic a; 方式一
dynamic a = 100; 方式二

✅
void main() {
  dynamic a;
  a = "hello word";
  print(a);
  a = 10;
  print(a + 10);
}

✅
void main() {
  dynamic a = "hello word";
  print(a);
  a = 10;
  print(a + 10);
}
3、使用明确的类型声明变量

当然你也可以用具体类型去定义变量,更清楚地跟 编译器 表达你的意图,这样编辑器和编译器就能使用这些具体类型向你提供代码补全 或 编译警告的提示了。

如:
num a; 方式一
num a = 100; 方式二

二、常量(用finalconst来声明一个常量)

如果你想定义不可变的变量即常量,则需要在定义变量前使用 finalconst 关键字替代var具体的类型:

  • const 表示必须用常量值或常量表达式初始化,且不能被再次赋值;适用于定义编译常量(字面量固定值)的场景;
  • final 表示可以在声明时或者运行时赋值,只能被赋值一次。适用于定义运行时常量的场景。但是如果声明时就赋值的话,编译器就会提示使用const

如:
const num a = 100; 方式一const 表示必须用常量值或常量表达式初始化,且不能被再次赋值
const a = 100; 方式二const 表示必须用常量值或常量表达式初始化,且不能被再次赋值

final num d; 方式一final 表示可以在声明时或者运行时赋值,只能被赋值一次
final d; 方式二final 表示可以在声明时或者运行时赋值,只能被赋值一次
d = 100;

:只能赋值一次
❌
void main() {
  final c = "hello world";
  c = "hello";
  print(c);
}
: Error: Can't assign to the final variable 'c'.
lib/main.dart:7
  c = "hello";
  ^
  • final 和 const 有什么区别呢?
    const在赋值时, 必须用常量值或常量表达式初始化,且不能被再次赋值;
    final在赋值时, 可以动态获取, 比如赋值一个函数。

例子:

String getName() {
  return 'coderwhy';
}

main(List<String> args) {
  const name = getName(); // 错误的做法, 因为要执行函数才能获取到值
  final name = getName(); // 正确的做法
}
  • const放在赋值语句的右边,可以共享对象,提高性能。
    这里可以暂时先做了解,后面讲解类的常量构造函数时,我会再次提到这个概念。

例子:

class Person {
  const Person();
}

main(List<String> args) {
  final a = const Person();
  final b = const Person();
  print(identical(a, b)); // true

  final m = Person();
  final n = Person();
  print(identical(m, n)); // false
}

相关文章

  • 5、Dart 变量

    详情请看 Dart 编程语言概览[https://www.dartcn.com/guides/language/l...

  • Dart学习-基础篇

    1.Dart学习入门2.Dart学习-关键词3.Dart学习-变量4.Dart学习-内置类型5.Dart学习-方法...

  • dart学习总结

    一、Dart 入口方法介绍 Dart打印 Dart注释 Dart变量 常量申明 变量命名规则 1.变量声明,用va...

  • Dart 基础数据类型及方法

    Dart 变量 dart 可以不预先定义变量类型,会自动类型推倒,即 dart 语言有类型校验。 dart 中定义...

  • dart基础

    [TOC] 主要介绍dart的一些语言规范和语法。 dart入口函数 变量 dart可以通过var来定义变量,可以...

  • 一.Dart语法-操作符、方法与异常

    Dart基础 运行Dart 代码可以使用 dart xxx.dart,dart命令需要配置环境变量,将 “${F...

  • Dart - 变量

    1.Dart中变量的两种方式 输出结果:AB 2.Dart中类型的改变 在Dart中一旦变量的类型被确定,就不能再...

  • Dart学习笔记

    Dart学习笔记 目录·1.推荐学习网站·2.认识dart·3.语言特性·4.变量与常量·5.关键字·6.流程控制...

  • 【Flutter】Dart基本语法

    Dart编程语言——基本概念及变量类型Dart编程语言——方法Dart编程语言——操作符、流程控制和异常Dart编...

  • 1.Dart变量定义、类型

    Dart语法 定义变量var/int/double 打印变量name: print('$name'); 打印变量类...

网友评论

      本文标题:5、Dart 变量

      本文链接:https://www.haomeiwen.com/subject/evlbkrtx.html